Parametre dediğimiz şey nedir

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Parametre dediğimiz şey nedir

Mesaj gönderen webaytek »

Parametre'yi daha çok ms-dos programlarında kullandığım için yabancı değilim ancak delphi ile program yazarken mesela "-silent" parametresinde programın her açılışta tray'de açılmasını sağlayabiliriz ama nasıl - mesela bir butonun altında çalışan prosedür veya fonksiyonu nasıl parametre olarak tanıtabiliriz - mesela bir text editor yazdım - buna %1 parametresini koyduğumda (ki böyle mi bilmiyorum :roll: ) programdaki richedit1.lines.add(programyolu) gibi bir komutu çalıştırmasını, programyolu değişkenini de parametre olan %1 'in belirtmesini nasıl sağlarız ??? - KOLAY GELSİN
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Parametre için ParamCount a bakabilirsin. ParamCount sıfırdan büyük ise parametre verilmiş demektir.

ParamStr(0): programın adını yolu ile birlikte verir.

ParamStr(1): 1.inci parametreyi.
ParamStr(2): 2.nc parametreyi vs. verir..
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

rsimsek ustam ellerinize sağlık ama hiç bişey anlamadım - daha doğrusu bir exe'ye parametre nasıl verilir / bu parametre compile edildikten sonra nasıl çağırılır bunları bilmediğim ve ayrıca paramcount komutunda verilen örnekteki
var
i: Integer;
for i := 0 to ParamCount – 1 do
begin
if LowerCase(ParamStr(i)) = 'beep' then
Beep(10000,1000)
else if (LowerCase(ParamStr(i)) = 'exit' then
Application.Terminate;
end;
(var sonrası araya begin koydum)
paramcount sonrası
illegal character : $96 hatası alıyorum - deneme şansım olmuyor
bu saydıklarım yüzünden henüz olayı kavrayamadım :D
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Delphi ortamında denerken Run / Parameters.. dan parametre verebilirsin.

Derlediğin programı çalıştırırken yanına parametre verebilirsin.

Çalıştıra; "D:\Program Files\Borland\Delphi7\Projects\Project2.exe" parametreeee şekline yazarsan çalışacaktır.

Kod: Tümünü seç

var
  i: Integer;
begin
  for i := 0 to ParamCount – 1 do
    if LowerCase(ParamStr(i)) = 'beep' then
      Beep(10000,1000)
    else if (LowerCase(ParamStr(i)) = 'exit' then
      Application.Terminate;
end;
Verdiğin örnekte de parametreler içinde beep ve exit varsa ona göre işlem yapıyor.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
karflake
Üye
Mesajlar: 222
Kayıt: 15 Haz 2003 03:57

Mesaj gönderen karflake »

webaytek yazdı:bu parametre compile edildikten sonra nasıl çağırılır
Ayrıca programınızın exe dosyasının kısayoluna parametreyi ekleyebilirsiniz. Kısayolu sağ tıkladıktan sonra Özellikleri seçip, Kısayol tabına geçtikten sonra, Hedef kısmını "C:\Program Files\Parametre\Project1.exe silent" şeklinde değiştirerek project1'e parametre iletebilirsiniz. Kurulum programları ile kısayolların bu şekilde oluşmasını sağlayabilirsiniz.

WinExec ve ShellExecute gibi komutlarla da benzer şekilde parametreleri kullanabilirsiniz.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

yaw siz varya siz - ne diim ben yaw allah şu delphitürkiye forum üyelerine sabır selamet versin - bizimle uğraşıyosunuz - ama hallettim saolun :-D
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

:) :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
paramcount;
for i := 0 to ParamCount - 1 do
begin         
if LowerCase(ParamStr(i)) = 'silent' then
showmessage('silent')
else if LowerCase(ParamStr(i)) = 'terminate' then
showmessage('terminate')
else if LowerCase(ParamStr(i)) = 'message' then
showmessage('message')
run > parameters da sırasıyla aralarında boşluk olmak şartıyla silent terminate message yazıyorum
KOD SONUCUNU açıklıyorum := compile ederken ilk iki mesaj kendiliğinden geliyor. programı direkt klasör içinden açınca hiçbiri çalışmıyor direkt form görünüyor.
ayrıca proje1.exe parametreadi calismiyor maalesef :(
Kullanıcı avatarı
karflake
Üye
Mesajlar: 222
Kayıt: 15 Haz 2003 03:57

Mesaj gönderen karflake »

Zaten kodunuzun bahsettiğiniz şekilde çalışması gerekir. Run menüsünden parameter'a değer yazınca, program (Delphi'de) parametreler girilmiş gibi çalışır. Delphi parametrelerin exe dosyaya gönderilme işini kendi yapar.Programı direkt klasörden açınca(Delphi dışından) da çalışmaması normal, çünkü exe dosyayı doğrudan; yani parametre belirtmeden açtınız.

Programı delphi dışından parametreli çalıştırmak için, exe'nin kısayolunu oluşturun, Kısayolu sağ tıkladıktan sonra Özellikleri seçip, Kısayol tabına geçtikten sonra, Hedef kısmına "C:\Program Files\Borland\Delphi7\Projects\Project1.exe silent" (tırnaklar olmadan) yazıp, exe dosyayı bu kısayol yardımıyla çalıştırın.

Diğer bir yol olarak da(işletim sisteminiz Xp ise) Çalıştır'a cmd yazdıktan sonra, projenin bulunduğu klasöre gidip ve "Project1.exe silent" komutunu verebilirsiniz.

Burada bu konuyla ilgili bir makale de var.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

dediğinizi de denedim zaten - ayrıca dediğim gibi parametre kullanma konusunda sorunum yok. MS-DOS'tan alıştığımı söylemiştim. ancak sorunum parametreyi zannediyorum ki hatalı vermek konusunda. anlayamadım - yaw elinizde kullandığınız işe yaradığına emin olduğunuz bir parametre başlığı varsa lütfen rica ediyorum - kod olarak tabi. benim yukarıda yazdığım kodu çalıştırmayı becerebilen de haber versin lütfen
Kullanıcı avatarı
karflake
Üye
Mesajlar: 222
Kayıt: 15 Haz 2003 03:57

Mesaj gönderen karflake »

Sizin yukarıdaki kodu aşağıdaki şekilde düzenleyince -sanırım istediğiniz biçimde- çalışıyor.

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
    for i := 1 to ParamCount do
  begin
    if LowerCase(ParamStr(i)) = 'silent' then
      showmessage('silent')
    else
    if LowerCase(ParamStr(i)) = 'terminate' then
      showmessage('terminate')
    else
      if LowerCase(ParamStr(i)) = 'message' then
    showmessage('message');
  end;
end;
rsimsek yazdı:ParamStr(0): programın adını yolu ile birlikte verir.
Sizin kodunuz bu yüzden 3. parametre olan message'yi görmüyor. Üçüncü parametre olan message ParamStr(3) değerinde duruyor. Sizin döngünüz 2'de duruyor.

Kısayol ile parametre yollamada belirtmeyi unuttuğum bir durum olmuş. Eğer projenizin bulunduğu yolun içinde 8 karakterden daha uzun bir klasör adı varsa, Hedef kısmını şu şekilde yazmalısınız(tırnaklar dahil)

Kod: Tümünü seç

"C:\Documents and Settings\KullaniciAdi\Desktop\Parametre\Project1.exe" silent
Yukarıdaki kısayolu düzenledikten sonra, bu kısayola çift tıkladığınızda, program silent mesajını vererek açılacaktır.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

oncreate olayına

Kod: Tümünü seç

if LowerCase(ParamStr(1)) = 'silent' then
showmessage('silent')
else if LowerCase(ParamStr(1)) = 'terminate' then
showmessage('terminate')
else if LowerCase(ParamStr(1)) = 'message' then
showmessage('message')
yazdım hepsi oldu çok teşekkür ederim yaw - herkesin ellerine sağlık
hepinize allah sabır versin :D
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Güle güle kullan :) :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

wallahi bi daha rahatsız etmiicem yaw :D

benim asıl istediğim şuydu. bir prog.'um war.
windows ta birlikte aç komutu sonrası çıkan listeye kendi prog.'umu ekledim. listeden benim programım seçilirse edit1.text:=dosyaadi olacak
yeniden yardımcı olursanız sevinirim :oops: :)
Cevapla