siz olsanız bu program için nasıl bir mantık yazarsınız?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
FXERKAN
Üye
Mesajlar: 178
Kayıt: 26 Tem 2003 11:06
Konum: Sivas - Konya
İletişim:

siz olsanız bu program için nasıl bir mantık yazarsınız?

Mesaj gönderen FXERKAN »

bir formum var, bunun içerisine sürüklenip bırakılan her türlü dosya için form üzerinde
bir buton oluşturmak ve butona tıklayıncada bu sürüklenip bırakılan programı çalıştırmak istiyorum

tabi program kapatılıp yeniden açıldığında bu butonlar kaybolmayacak, yani bunların kaydını bir
yerde tutacak ve tabii ki her açılışta bunları tekrar forma yerleştirecek

böyle bir program için siz nasıl bir mantık geliştirirdiniz? yani nasıl bir sistem uygulardınız.

ben sürüklenıp bırakılan her dosya için programın olduğu yerde bir kısayol oluşturduktan sonra,
butonları bu kısayollara atamayı düşünüyorum, ve tabii ki kayıtlarıda herhangibir databasede saklamayı
düşündüm (ancak mdb, db yada dbf gibi birşey kullanmak istemiyorum, ini yada onun gibi bişey)
ancak ini dosyasının kullanımı burada pek uygun olmadı

siz olsanız nasıl bir şey yapardınız?
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Registry kullanmak da bir alternatif olabilir...

Ya da exe'nin yaninda formatini tamamen sizin belirleyecegi bir text dosyasi....

Ama ayrica bir kısayol oluşturmaya gerek olmadigini dusunuyorum. Yani programin linkini de text dosya ya da registry'ye kaydedebilirsiniz. Yani exe'nin yaninda bir suru de kısayol olmasına gerek yok. Fuzuli kalabalik olur bence...
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

bence inifile kullan rahatlıkla yaparsın
ben inifile kullanımlarımı getini ve setini olarak iki asamada yapıyorum
mesela

Kod: Tümünü seç

function AppDir:String;
begin
  result:=ExtractFileDir(Application.ExeName);
end;
  
procedure GetIni;
begin
  with TIniFile.Create(AppDir + '\' + INI_FILE) do
  begin
    oxPort.ItemIndex := ReadInteger('Com Setting', 'Com Port', 1);
    oxBaudrate.ItemIndex := ReadInteger('Com Setting', 'Baudrate', 0);
    oxParity.ItemIndex := ReadInteger('Com Setting', 'Parity', 0);
    oxDataBit.ItemIndex := ReadInteger('Com Setting', 'DataBit', 0);

    Destroy;
  end;
end;

procedure SetIni;
begin
  with TIniFile.Create(AppDir + '\' + INI_FILE) do
  begin
    //HABERLEŞME
    WriteInteger('Com Setting', 'Com Port', oxPort.ItemIndex);
    WriteInteger('Com Setting', 'Baudrate', oxBaudrate.ItemIndex);
    WriteInteger('Com Setting', 'Parity', oxParity.ItemIndex);
    WriteInteger('Com Setting', 'DataBit', oxDataBit.ItemIndex);

    Destroy;
  end;
end;

tabi sen kullanırken Tinifile ın ReadSection yada ReadSections metodlarını da kullanacaksın okurken
buna gore de butonları ve kısayollarını olusturacaksın

soyle bir mantık la ise naslayabilirsin:

surukle bırak sonucunda inifile a buton1 ve her seferinde artacak bir section girilir
deger olarak da bu dosyanın tam yolunu kullanırsın

yani yapı su sekilde olur

[button1]
path=C:\Program Files\MyPrg\My.exe
[button2]
path=C:\Program Files\Vs\VsVs.exe

bunları soyle bir yontemle okuyabilirsin

Kod: Tümünü seç

procedure TSystem.LoadFromFile;
var
  i:Integer;
  sect:String;
begin
  with TIniFile.Create(MainDir+'\'+SYS_INI_FILE) do
  begin
     i:=1;
     while SectionExists('System '+IntToStr(i)) do
     begin
        sect:='System '+IntToStr(i);
        with FItems.Add do
        begin
          FNo:= i;
          FComment:=ReadString(sect,'Comment','');
          FSysType:=TSystemType(ReadInteger(sect,'Type',Ord(stSerial)));
          FSerProtocol:=TSerProtocol(ReadInteger(sect,'Serial Protocol',Ord(spHDLC)));
          FIpAdress:=ReadString(sect,'Ip Adress','0.0.0.0');
          FComPort:=TComPort(ReadInteger(sect,'Com Port',Ord(cpCom1)));
          FBaudrate:=TBaudrate(ReadInteger(sect,'Baudrate',Ord(br19200)));
          ScalesStr:=ReadString(sect,'Scales','');
        end;
        inc(i);
     end;
     Free;
  end;
end;
tabi ben kendi yazdıklarımdan alakasız yordamlar yapıstırıyorum ama anlarsın diye yenisini yazmıyorum:)
bu sekilde okuduktan sonra sıra ile butonları form uzerinde olusturur
ExtractFileName ile Path den Filename i butonun captionuna yazdırırsın
ve soyle basit bir yordamı tum butanların click yordamına yazarsın

Kod: Tümünü seç

procedure ButtonClick(Sender: TObject);
var
  sect,path:String;
begin
  sect:=(Sender as TButton).Name;
  with TIniFile.Create(AppDir + '\' + INI_FILE) do
  begin
    path:=ReadString(sect,'Path','');
    Free;
  end;
  if path<>'' then
    WinExec(PChar(path),SW_SHOW);
end;

simdilik aklıma gelenler bunlar
aslında vaktim olsa hepsini yazmak da isterdim
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

Mesaj gönderen safak »

Yukardakilerin dışında:

Özellikle Database yapısı kullanmak isterseniz ClientDataSet (MyBase) ile yapabilirsiniz. Midas.dll li eklemeniz gerekir (260KB). Bir Giridle istediğiniz şekilde güncelleştirebilirsiniz.

Pascal'dan gelen klasik dosya operasyonlaırnı kullanarak yapabilirsiniz.

Kolay Gelsin,
Kullanıcı avatarı
FXERKAN
Üye
Mesajlar: 178
Kayıt: 26 Tem 2003 11:06
Konum: Sivas - Konya
İletişim:

Mesaj gönderen FXERKAN »

gkimirti hocama teşekkür ederim

ben ini dosyasının section özelliğini bilmiyordum. bundan isteğim şeyi tam oalrak ben kendime göre ayarladım.

databaseden daha rahat oldu yani
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Cevapla