![]() |
Schreib einmal die Methode load_inifile so um:
Code:
Und starte dann das Programm über F9. Wenn keine Meldung erscheint, dann wissen wir zumindest genau, dass ExtraForm.Che... daran schuld ist.
procedure TKundendaten.load_inifile;
begin Ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'settings.ini' ); try ExtraForm.CheckBox1.Checked:=ini.ReadBool('Sektion1','check_box', true) ShowModal('Juhu, ich bin bis hierher gekommen'); finally Ini.Free; end; end; |
Ich hab jetzt was anderes probiert:
Code:
und oben vor der implementation habe ich Ini:TIniFile herausgenommen.
procedure TKundendaten.save_inifile;
var Ini : TIniFile; begin Ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'settings.ini' ); try Ini.WriteBool('Sektion1','check_box',ExtraForm.CheckBox1.Checked); finally Ini.Free; end; end; procedure TKundendaten.load_inifile; var Ini : TIniFile; begin Ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'settings.ini' ); try ExtraForm.CheckBox1.Checked:=ini.ReadBool('Sektion1','check_box', true) finally Ini.Free; end; end; Jetzt kommt zwar keine Fehlermeldung mehr aber die ExtraForm öffnet sich auch nicht! |
Versuch mal TRY-EXCEPT-FINALLY wegzulassen....
Du hast die INI-DATEI global deklariert? Deklarier sie doch einfach mal local... Genauso mit
Code:
versuch damit auch mal global.
Kundendaten: TKundendaten;
Code:
public
{ Public-Deklarationen } procedure save_inifile; procedure load_inifile; end; var Kundendaten: TKundendaten;
Code:
procedure TKundendaten.save_inifile;
var ini:tinifile; begin Ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'settings.ini' ); Ini.WriteBool('Sektion1','check_box',ExtraForm.CheckBox1.Checked); Ini.Free; end; procedure TKundendaten.load_inifile; var ini:tinifle; begin Ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'settings.ini' ); ExtraForm.CheckBox1.Checked:=ini.ReadBool('Sektion1','check_box', true) Ini.Free; end; procedure TKundendaten.FormShow(Sender: TObject); begin load_inifile; if ExtraForm.CheckBox1.Checked Then Geburtsdatum.Click; end;
Code:
procedure TExtraForm.CheckBox1Click(Sender: TObject);
begin Kundendaten.save_inifile; end; |
Zitat:
|
Hi, hab ich alles schon probiert, es kommt jetzt zwar keine Fehlermeldung, aber die ExtraForm wird nicht geöffnet, obwohl die Checkbox in der ExtraForm aktiviert ist!
|
Poste mal den Code in Ereignis OnClick von Button Geburtsdatum.
|
Hallo m-werk,
dein Code, der ganz oben steht ist OK. Das Ini.Create vor den try ... finally Block zu setzen ist eigentlich nicht gut, weil auch diese Anweisung grundsätzlich zu einem Fehler führen könnte. Du schreibst oben: Zitat:
|
So sieht der Code beim Button Geburtsdatum aus:
Code:
procedure TKundendaten.GeburtsdatumClick(Sender: TObject);
var i,r:Integer; begin r:=DM.ADOSHaupt.RecNo; for i:=1 to DM.ADOSHaupt.RecordCount do begin if (StrToDate(Copy(DM.ADOSHaupt.FieldByName('Geburtsdatum').AsString,0,6)+C opy(DateToStr(now+7),7,4))<=now+7) and (StrToDate(Copy(DM.ADOSHaupt.FieldByName('Geburtsdatum').AsString,0,6)+C opy(DateToStr(now),7,4))>now) then begin DM.ADOSHaupt.RecNo:=i; DM.ADOSHaupt.Filtered:=true; ExtraForm.Show; Exit; end else DM.ADOSHaupt.RecNo:=r; end; end; |
Zitat:
Selbst Borland macht es vor wie man es machen soll:
Code:
Und so nebenbei wirft der Compiler bei deiner Programmierweise mit Create in den TRY-Block nur Warnungen aus. Die Lösung mit vorherigem setzen auf nil ist auch nicht gerade der schönste Programmierstil. (ich verweise an dieser Stelle auf den Object Pascal Style Guide)
FlippedList := TList.Create;
try ... for Loop := 0 to ControlCount - 1 do with Controls[Loop] do begin FlippedList.Add(Controls[Loop]); Left := TheWidth - Width - Left; end; ... finally FlippedList.Free; end; @m-werk: hast du auch überprüft, ob der Code zum wählen, ob der Dialog nun angezeigt werden soll, auch richtig arbeitet? Was mir da z.B. aufgefallen ist: (StrToDate(Copy(DM.ADOSHaupt.FieldByName('Geburtsd atum').AsString,0,6) Was soll denn die Null bei Copy(). gehöhrt da nicht vielleicht eine 1 hin? |
Hallo jgb,
das tolle an Free is, dass es (im Gegensatz zu Destroy) auch bei Nil funktioniert. Das bedeutet, dass der Finally Teil immer funktioniert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 Uhr. |
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