| Autor |
Beitrag |
rafi@work
      
Beiträge: 147
Win2000 Prof
D7 Enterprise
|
Verfasst: Do 21.08.03 15:36
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 21.08.03 15:49
Liegt diese INI-Datei denn im Windows-Verzeichnis? Ohne Pfadangabe wird das nämlich vorausgesetzt. Kannst du auch in der Hilfe nachlesen. Notfalls gib den Pfad mit an, dann sollte es gehen.
Allgemein: du könntest dich um einen besseren Stil bemühen. Evtl. brauchst du die Variable "FGatewayIni" ja an anderer Stelle noch mal, dann will ich nichts gesagt haben. Wenn nicht, dann solltest du das INI-Objekt nach dem Benutzen auch wieder freigeben. Kurz gesagt:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| ini := TIniFile.Create('...'); if(ini <> nil) then try finally ini.free; end; |
Aber auch das steht IMHO in der Hilfe.
|
|
Akut-Programming
      
Beiträge: 69
WinXP, Win2000
Delphi 7 Enterprise, Delphi 5 Prof.
|
Verfasst: Do 21.08.03 15:53
_________________ Gruß,
Akut - Programming
Zuletzt bearbeitet von Akut-Programming am Do 21.08.03 15:54, insgesamt 1-mal bearbeitet
|
|
rafi@work 
      
Beiträge: 147
Win2000 Prof
D7 Enterprise
|
Verfasst: Do 21.08.03 15:53
Danke!
ich habe es jetzt so versucht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TFormIvrHmpConfigTool.LoadFromIni1Click(Sender: TObject); var GatewayIni : TIniFile; FileLevel : string; begin GatewayIni := TIniFile.Create('E:\work\projects\programming\delphi\IVR HMP Config Tool\bsGateway.ini'); FileLevel := GatewayIni.ReadString('LOGGER','FILE_LEVEL',''); GatewayIni.Free; end; |
doch leider sind alle variablen leer, was ist hier nicht richtig?
Moderiert von Tino: Delphi-Tags hinzugefügt.
|
|
rafi@work 
      
Beiträge: 147
Win2000 Prof
D7 Enterprise
|
Verfasst: Do 21.08.03 15:59
@ Akut-Programming, bei deinem Beispiel sind di Variablen leider auch leer 
|
|
Akut-Programming
      
Beiträge: 69
WinXP, Win2000
Delphi 7 Enterprise, Delphi 5 Prof.
|
Verfasst: Do 21.08.03 16:05
kann es sein, das du noch einen parameter vergessen hast, bei mir würde es so aussehen...
Delphi-Quelltext 1: 2:
| windowheight:=ini.ReadInteger('einstellungen','WindowHeight',0); |
ahhja...  Du machst des ja mit n string, da haste den 3 parameter nur leer gelassen
Moderiert von Tino: Delphi-Tags hinzugefügt.
_________________ Gruß,
Akut - Programming
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Do 21.08.03 16:33
@Rafi: Ich würde vielleicht statt den direkten Pfad zu nutzen, einfach mal ParamStr(0) nehmen, denn dann liegt die INI wirklich in dem Verzeichnis, wo auch das Tool liegt.
_________________ Hasta La Victoria Siempre
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 21.08.03 19:44
Nee, durch paramstr(0) gehst du nur in deinem Programm davon aus, dass die INI im selben Verzeichnis wie das Programm liegt. Tatsächlich kann sie aber an anderer Stelle sein. 
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: Do 21.08.03 20:00
| MathiasSimmack hat folgendes geschrieben: | Nee, durch paramstr(0) gehst du nur in deinem Programm davon aus, dass die INI im selben Verzeichnis wie das Programm liegt. Tatsächlich kann sie aber an anderer Stelle sein.  |
na wo soll sie denn sonst liegen? übrigens mit
Delphi-Quelltext 1: 2:
| pfad:=ExtractFilePath(ParamStr(0)); FGatewayIni:=TIniFile.Create(pfad+'bsGateway.ini'); |
wirds net funzen, da hier der Backslash vergessen wurde. Das ergibt dann grütze.
richtiger:
Delphi-Quelltext 1: 2:
| pfad:=IncludeTrailingBackSlash(ExtractFilePath(ParamStr(0))); FGatewayIni:=TIniFile.Create(pfad+'bsGateway.ini'); |
Es ist übrigens usus, die zum Programm gehörigen files auch dort zu lagern, wo die Applikation liegt.
grez
msch
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Do 21.08.03 20:10
@Mathias: Ich habe mich wohl einfach ein wenig verkehrt ausgedrückt. Wenn die Datei nicht existiert, wird ja eh auf den Default-Wert zurückgegriffen und ich gehe mal fest davon aus, er wird die INI auch später speichern wollen und wenn er das mit ParamStr() macht, ist es für IMHO einfacher, denn wenn er einen direkten Pfad eingibt (so wie er es tun will), kann's Probleme geben. Wer weiß, vielleicht ist E:\ bei jemandem ein CD-Laufwerk.
Das war's, was ich gemeint habe..
_________________ Hasta La Victoria Siempre
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 21.08.03 21:27
Terra hat´s kapiert:
| MSCH hat folgendes geschrieben: | | MathiasSimmack hat folgendes geschrieben: | Nee, durch paramstr(0) gehst du nur in deinem Programm davon aus, dass die INI im selben Verzeichnis wie das Programm liegt. Tatsächlich kann sie aber an anderer Stelle sein.  |
na wo soll sie denn sonst liegen ? |
Wenn du in deinem Programm "ExtractFilePath(paramstr(0))" als Ausgangsverzeichnis benutzt, um die INI zu öffnen (s. ReadString im Beispielcode dieses Threads), wird sie nicht wie von Zauberhand auch automatisch in dem Verzeichnis der Exe auftauchen. Es obliegt deiner Verantwortung, die INI dort abzulegen. Ob nun manuell oder im Programm. Darauf wollte ich hinaus. Bitte erst nachdenken, dann kritisieren.
Und Ja, Terra, du hast ja recht. Man gibt nach Möglichkeit keine festen Pfade in einem Programm an, das man evtl. später veröffentlichen möchte. Man benutzt entweder "paramstr(0)" oder -wie in Luckies Fall mit seinem LuckieDIPS- irgendeinen Benutzerordner, um Konfig- und ähnliche Daten zu speichern. Ich gebe dir also unbesehen recht. Ich fand nur deine Formulierung amüsant.
Gruß.
|
|
rafi@work 
      
Beiträge: 147
Win2000 Prof
D7 Enterprise
|
Verfasst: Fr 22.08.03 08:49
danke allen für eure hilfe!!! so hats prima funtioniert
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TFormIvrHmpConfigTool.LoadFromIni1Click(Sender: TObject); var FileLevel,pfad: string; GatewayIni: TIniFile; begin pfad:=ExtractFilePath(ParamStr(0)); GatewayIni:=TIniFile.Create(pfad+'bsGateway.ini'); FileLevel := GatewayIni.ReadString('LOGGER','FILE_LEVEL',''); GatewayIni.Free;
If (FileLevel = 'T') then begin ComboBoxFile.Text := 'ON'; end; if (FileLevel = 'I') then begin ComboBoxFile.Text := 'OFF'; end; |
gruss
|
|