Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi INI Dateien mit Integer verwenden (https://www.delphipraxis.net/75461-ini-dateien-mit-integer-verwenden.html)

gauggi 19. Aug 2006 14:38


INI Dateien mit Integer verwenden
 
Hallo!

Was ist da Falsch??

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var
ini: TIniFile;
a: integer;
begin
try
ini := TiniFile.Create(ExtractFilePath(ParamStr(0))

+'gaugghtmlkonfig.ini');
begin
//Ab hier ist es falsch laut D3
a:= ini.ReadInteger('Allgemein', 'Erststart', 0);
//Dies seien inkompatible Typen
if a='1' then OKRightDlg7.ShowModal;
end;
Wie könnte man das anders machen?? :gruebel:

mfg gauggi

[edit=Jelly]Titel auf Wunsch von Gauggi geändert Mfg, Jelly[/edit]

OregonGhost 19. Aug 2006 14:41

Re: Form über Ini anzeigen geht nicht
 
Hmm, mir wäre neu, dass man in Delphi mitten im Code einen neuen Block (begin...end) eröffnen kann...

leddl 19. Aug 2006 14:42

Re: Form über Ini anzeigen geht nicht
 
Zitat:

Zitat von gauggi
Hallo!

Was ist da Falsch??

Delphi-Quellcode:
a: integer;
if a='1' .,..
Wie könnte man das anders machen?? :gruebel:

ZB einen Integer auch mit einem Integer vergleichen :zwinker: a ist als Integer deklariert, du vergleichst die Variable aber später mit der String-Konstanten '1'. Laß die ' weg, dann geht's auch ;)

DGL-luke 19. Aug 2006 14:43

Re: Form über Ini anzeigen geht nicht
 
wenn a ein integer ist, kannst du es nicht mit dem string-literal '1' vergleichen. Wir sind ja hier schließlich nicht bei PHP! :warn:

EDIT: Ja, OreghonGhost, das try ist da wohl ein wenig unglücklich geworden...

gauggi 19. Aug 2006 14:47

Re: Form über Ini anzeigen geht nicht
 
Zitat:

Zitat von DGL-luke
wenn a ein integer ist, kannst du es nicht mit dem string-literal '1' vergleichen. Wir sind ja hier schließlich nicht bei PHP! :warn:

EDIT: Ja, OreghonGhost, das try ist da wohl ein wenig unglücklich geworden...

Wie kann ich das nun machen? :wiejetzt:

Zum Schluss wird die INI wieder freigegeben:
das habe ich vom obrigen Code weggelassen:
Delphi-Quellcode:
finally
ini.Free
end;
end;
mfg gauggi

CK_CK 19. Aug 2006 14:49

Re: Form über Ini anzeigen geht nicht
 
So:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var
  ini: TIniFile;
  a: integer;
begin
  try
    ini := TiniFile.Create(ExtractFilePath(ParamStr(0))+'gaugghtmlkonfig.ini');
    a:= ini.ReadInteger('Allgemein', 'Erststart', 0);

    if a=1 then OKRightDlg7.ShowModal;
  finally
    ini.Free;
  end;
end;

gauggi 19. Aug 2006 14:51

Re: Form über Ini anzeigen geht nicht
 
Zitat:

Zitat von CK_CK
So:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var
  ini: TIniFile;
  a: integer;
begin
  try
    ini := TiniFile.Create(ExtractFilePath(ParamStr(0))+'gaugghtmlkonfig.ini');
    a:= ini.ReadInteger('Allgemein', 'Erststart', 0);

    if a=1 then OKRightDlg7.ShowModal;
  finally
    ini.Free;
  end;
end;

Aso! :zwinker: Die Stringstriche '' habe ich ganz übersehen!

Danke an alle :thumb:

Hawkeye219 19. Aug 2006 15:10

Re: Form über Ini anzeigen geht nicht
 
Besser so:

Delphi-Quellcode:
ini := TiniFile.Create(...);
try
  // INI verarbeiten
finally
  ini.Free;
end;
Wenn der Constructor von TIniFile eine Exception auslöst, wird die (lokale) Variable ini nicht initialisiert. Steht der Aufruf des Constructors im Innern der TRY-Anweisung, wird auf jeden Fall der FINALLY-Abschnitt durchlaufen, in dem der Aufruf der Methode Free dann wahrscheinlich zum nächsten Fehler führen wird. Mit obigem Code wird das vermieden.

Gruß Hawkeye

Muetze1 19. Aug 2006 16:23

Re: Form über Ini anzeigen geht nicht
 
Zitat:

Zitat von Hawkeye219
Wenn der Constructor von TIniFile eine Exception auslöst, wird die (lokale) Variable ini nicht initialisiert.

Nein, da widerspreche ich und sage, dass die Variable in dem Falle trotzdem ein Nil bekommt. So hatte ich das mal ausprobiert und bin auf das Ergebnis gekommen.

/EDIT: Ok, nicht mal auf das kann ich mich verlassen, wie Hawkeye219 beweist. Ich hatte es damals mit D4 ausprobiert, aber das sollte keinen Unterschied machen. Nun gut, ich nehme alles zurück und behaupte das Gegenteil...

Hawkeye219 19. Aug 2006 17:52

Re: Form über Ini anzeigen geht nicht
 
Hoffentlich wird das jetzt nicht OT...

Zitat:

Zitat von Muetze1
So hatte ich das mal ausprobiert und bin auf das Ergebnis gekommen.

Hier ist mein Testcode:

Delphi-Quellcode:
type
  TDummy = class (TObject)
  public
    constructor Create;
  end;

constructor TDummy.Create;
begin
  inherited;
  raise Exception.Create ('oops!');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Dummy : TDummy;
begin
  Dummy := Pointer(4711);
  try
    Dummy := TDummy.Create;
  except
    ShowMessage (Format('%d', [Cardinal(Dummy)]));
  end;
end;
Die Messagebox zeigt den Wert 4711 an, nicht den Wert 0. Getestet mit Delphi 6 und BDS 2006.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz