Autor Beitrag
Hiob
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 30.05.06 08:22 
Hallöchen!

Ich hab ein verbesserungswürdiges CD-Archiv programmiert und möchte jetzt eine Datei, in der die Informationen gespeichert sind, automatisch aufrufen lassen...standardmäßig ist das ja eine *.dat-Datei. Ich weiß auch, dass das in die OnCreate Prozedur muss, aber ich weiß nicht wie ^^

Bitte helft mir, hab schon gesucht wie verrückt!

MfG
Hiob


Moderiert von user profile iconraziel: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 30.05.2006 um 18:20
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 30.05.06 08:25 
Zuerst mal muss deine Dateiendung auf dein Programm registriert werden. Das machst du am besten von Windows aus (Bei XP zum Beispiel über "öffnen mit" und dann den Haken bei "immer mit diesem Programm öffnen" setzen).

Dann bekommt dein Programm beim Start den Dateinamen der angeklickten Datei als ersten Parameter übergeben, den du dann an deine Datei-laden-Prozedur übergeben kannst. Stichworte dafür sind ParamStr und ParamCount.

_________________
We are, we were and will not be.
Hiob Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 30.05.06 12:50 
hhm...ich möchte aber eigentlich nicht die Datei anklicken, damit sich das CD-Archiv öffnet, sondern möchte das Programm öffnen und im Hintergrund öffnet er automatisch diese Datei und liest die Infos (den Record) aus...ist das nicht möglich?
ravenclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 19

Windows 7, Ubuntu
Delphi 2005 PE
BeitragVerfasst: Di 30.05.06 13:01 
Falls du den Pfad der Datei zur Entwurfszeit festlegen willst, brauchst du doch nur in der OnCreate-Prozedur deine Lade-Prozedur mit dem Dateinamen als Parameter aufrufen.
Sonst kannst du auch den Dateinamen in eine Ini-Datei speichern und in der OnCreate-Prozedur auslesen. Den Pfad des Programms kriegt man mit Application.Exename raus (musst halt dann nur mit StrUtils (z.B. LeftStr(), Copy(), Delete() usw) den Pfad abschneiden). Das geht sicher auch einfacher, aber ich weiß nicht wie.
Und für die Ini-Datei kannst du TIniFile verwenden, das ist ein relativ schönes und einfach zu bedienendes Objekt für Ini-Dateien im Standardformat.

So, der Rest dürfte aus der Hilfe ersichtlich werden.

_________________
In Wikipedia Veritas!
Hiob Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 30.05.06 14:02 
hhm...ok...dann probier ich das nochmal so und meld mich dann bei geklücktem oder erfolglosem versuch ;) danke für die hilfe!
Danny87
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 688

Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
BeitragVerfasst: Di 30.05.06 14:07 
user profile iconravenclaw hat folgendes geschrieben:
Den Pfad des Programms kriegt man mit Application.Exename raus (musst halt dann nur mit StrUtils (z.B. LeftStr(), Copy(), Delete() usw) den Pfad abschneiden). Das geht sicher auch einfacher, aber ich weiß nicht wie..

Ich aber *gg*

Kannste zB so machen:

ausblenden Delphi-Quelltext
1:
ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'config.ini');					


Gruss
Daniel
Hiob Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 30.05.06 15:46 
hhm...ich hab noch nie mit ini-dateien was geschrieben, aber es wird mal intressant sowas zu tun ^^

Edit: okokok...also...folgendes...ich weiß überhaupt nicht mehr wie ich weitermachen soll ;) ich hab herausgefunden, dass man in der uses IniFiles hinzufügen muss. dann hab ich eine variable namens ini folgendermaßen deklariert:

ausblenden Delphi-Quelltext
1:
Ini: TIniFile;					


So...bisher sieht meine OnCreate so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.FormCreate(Sender: TObject);
var Ini: TIniFile;
begin
 ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'config.ini');
end;


die frage ist jetzt: wie gehts weiter?? :/ wie kann ich jetzt genau beim programmstart den pfad bis zu der (wenn vorhandenen) ini-datei herausfinden, dort den pfad meiner dat-datei (mit dem cd-archiv als inhalt) herauslesen und dann die dat-datei öffnen? und vorallem was passiert wenns die ini-datei bzw. die dat-datei noch gar nicht gibt? wird dann frecherweise eine leere ini-datei erstellt?
oh man bin ich ein anfänger...ich schlaf erstmal drüber...bis morgen
ravenclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 19

Windows 7, Ubuntu
Delphi 2005 PE
BeitragVerfasst: Mi 31.05.06 15:51 
Also, wenn du dir in der Delphi-Hilfe durchgelesen hättest, was ParamStr und ExtractFilePath machen, dann wüsstest du wahrscheinlich, dass du den Pfad der ini-Datei schon insofern hast, das du sie nur config.ini nennen und im Verzeichnis deines Programmes erstellen musst. Ob sie existiert, kannst du z.B. mit FileExists abfragen. Und wenn du dann in der Hilfe unter TIniFile nachliest, was man damit alles machen kann, siehst du vermutlich, dass darin Daten in folgendem Format gespeichert werden
ausblenden Quelltext
1:
2:
[Section]
<keyname>=<value>

Und wenn du dann zum Beispiel folgendes in die ini-Datei speicherst
ausblenden Quelltext
1:
2:
[Autostart]
Pfad=C:\MyDatFile.dat

dann kannst du zum Beispiel mit Stringvariable:=ini.ReadString('Autostart','Pfad','C:\Standard.dat'); (entsprechend der Deklaration halt) den Pfad der dat-Datei auslesen und deiner Lade-Routine übergeben.
Was das TIniFile-Objekt mit einer nichtexistenten Pfadangabe macht, weiss ich nicht, und was deine Lade-Routine damit macht, musst du selbst wissen, aber wie gesagt kann man das mit FileExists abfragen und entsprechend darauf reagieren

Ich hoffe, ich habe damit etwas weitergeholfen. Wie gesagt, der Hilfe-Index von Delphi bietet vielfältige Möglichkeiten, die entsprechenden Dinge zu finden.
Zum Beispiel ist es in deinem Fall sinnvoll, bei den Methoden von TIniFile mal reinzuschauen (insbesondere ReadString);

_________________
In Wikipedia Veritas!
Hiob Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 02.06.06 07:59 
hhm...danke für eure bemühungen. wie eine ini-datei aufgebaut ist, hab ich auch in der delphi-hifle nachgelesen, aber so richtig konnt ich mit den beispielen nichts anfangen...meist gibt es dazu noch ein haufen befehle und deklarationen, die ich nicht kenne geschweige denn verstehe. ich habs jetzt anders gelöst und zwar weiß ich ja, dass die - beispielsweise - test.dat im programmordner mit drinne ist, also hab ich das folgerndermaßen gelöst:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.FormCreate(Sender: TObject);
var i: byte;
   cd: t_archiv;
begin
 v_datname:='test.dat';   //physischer Dateiname
      assignfile(v_dat,v_datname);  //verbindet physischen mit logischen Dateinamen
      reset(v_dat);  //Aufbau der Struktur
      max:=filesize(v_dat);
      for i:=1 to max do
         begin
            read(v_dat,cd);
            v_cd[i]:=cd;
         end;
      closefile(v_dat);
 end;


ich danke euch trotzdem für die hilfe und weiss, wie ichs vielleicht das nächste mal besser machen kann.

DANKE!

mfg
hiob