Autor Beitrag
rafi@work
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 147

Win2000 Prof
D7 Enterprise
BeitragVerfasst: Do 21.08.03 15:36 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TFormIvrHmpConfigTool.LoadFromIni1Click(Sender: TObject);
var
  FileLevel : string;
begin
  FGatewayIni := TIniFile.Create('bsGateway.ini');
  FileLevel := FGatewayIni.ReadString('LOGGER','FILE_LEVEL','');
end;

er liest den Wert nicht raus, was ist hier falsch?

Moderiert von user profile iconTino: Titel geändert.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
ini := TIniFile.Create('...');
if(ini <> nil) then try
  { Werte auslesen, usw. }
finally
  ini.free;
end;

Aber auch das steht IMHO in der Hilfe.
Akut-Programming
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 69

WinXP, Win2000
Delphi 7 Enterprise, Delphi 5 Prof.
BeitragVerfasst: Do 21.08.03 15:53 
versuchs mal so, wenn die ini im selben ordner ist wie deine app:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
uses IniFiles;

...

procedure TFormIvrHmpConfigTool.LoadFromIni1Click(Sender: TObject); 
var 
  FileLevel,pfad: string;
  FGatewayIni: TIniFile;
 begin
    pfad:=ExtractFilePath(ParamStr(0));
    FGatewayIni:=TIniFile.Create(pfad+'bsGateway.ini');
    FileLevel := FGatewayIni.ReadString('LOGGER','FILE_LEVEL',''); 
end;


Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.

_________________
Gruß,
Akut - Programming


Zuletzt bearbeitet von Akut-Programming am Do 21.08.03 15:54, insgesamt 1-mal bearbeitet
rafi@work Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 147

Win2000 Prof
D7 Enterprise
BeitragVerfasst: Do 21.08.03 15:53 
Danke!

ich habe es jetzt so versucht:
ausblenden 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 user profile iconTino: Delphi-Tags hinzugefügt.
rafi@work Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 147

Win2000 Prof
D7 Enterprise
BeitragVerfasst: Do 21.08.03 15:59 
@ Akut-Programming, bei deinem Beispiel sind di Variablen leider auch leer :(
Akut-Programming
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 69

WinXP, Win2000
Delphi 7 Enterprise, Delphi 5 Prof.
BeitragVerfasst: Do 21.08.03 16:05 
kann es sein, das du noch einen parameter vergessen hast, bei mir würde es so aussehen...
ausblenden Delphi-Quelltext
1:
2:
//Beispiel
windowheight:=ini.ReadInteger('einstellungen','WindowHeight',0);

ahhja... :autsch: Du machst des ja mit n string, da haste den 3 parameter nur leer gelassen

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.

_________________
Gruß,
Akut - Programming
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: 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



BeitragVerfasst: 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. :wink:
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: 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. :wink:

na wo soll sie denn sonst liegen? übrigens mit
ausblenden 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:
ausblenden 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 user profile iconTino: Code- durch Delphi-Tags ersetzt.
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: 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



BeitragVerfasst: 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. :wink:

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 147

Win2000 Prof
D7 Enterprise
BeitragVerfasst: Fr 22.08.03 08:49 
danke allen für eure hilfe!!! so hats prima funtioniert


ausblenden 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
  // FILE_LEVEL auslesen in bsGateway.ini
  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