Hallo,
ich habe ein kleines Problem mit der opendialog-komponente:
Ich habe ein Options-Formular wo man verschiedene Einstellungen machen kann - unter anderem auch einen pfad incl. exe auswählen. Dieses kann man entweder direkt in das edit-feld reinschreiben oder mit der opendialog-komponente auswählen.
Anschliessend klickt man auf "Speichern" und eine ini wird mit den edit.text-inhalten erstellt.
Jetzt habe ich anschliessend eine prozedur welche überprüft ob die gespeicherte einstellungen.ini 1. vorhanden ist und 2. alle einstellungen drin sind (also nicht leer).
Das Problem: sobalt ich den pfad über die opendialog-komponente in das edit.text-feld übertragen habe meldet die überprüfungsprozedur das die einstellungen.ini nicht vorhanden sei (sie ist aber vorhanden).
Wenn ich den pfad per hand eingebe ist alles ok. Nur sobalt ich die opendialog-komponente an hatte funktioniert das programm nichtmehr.
Muss ich die opendialog komponente irgendwie noch extra beenden? Ich hab es bereits mit opendialog.free und opendialog.destroy versucht, aber es hat nichts gebracht.
Zugegeben, das ist wirklich schwer verständlich - aber ich weiss mir keinen rat ausser hier zu fragen. Die Delphi-Hilfe hat mir da auch nicht großartig weitergeholfen...
Hier mal die wichtigsten code-zeilen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm2.Button2Click(Sender: TObject); var pfad: string; begin opendialog1.Execute; pfad:=opendialog1.FileName; edit6.Text:=pfad; end; |
anschliessend wird bei klick auf speichern die ini-datei gespeichert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm2.Button1Click(Sender: TObject); var ini: TIniFile; begin ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'einstellungen.ini'); try ini.WriteString ('Einstellungen', 'exe', edit6.text); finally ini.free; end; end; |
und diese function überprüft jetzt die einstellungen.ini
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function testeeinstellungenini: boolean; begin result:=true; if fileexists('einstellungen.ini') then begin ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'einstellungen.ini'); try if (ini.Readstring('einstellungen','exe','')='') then result:=false finally ini.Free; end; end else begin result:=false; end; end; |
Wie gesagt, das ganze nur wenn ich den pfad über die opendialog-komponente an das editfeld übergebe! Wenn ich ihn manuel eintrage dann ist alles ok. Aber nach dem ich die Opendialogkomponente an hatte bringt auch manuell eintragen nichts mehr.
Ich habe kaum Hoffnung das sich den ganzen mist hier jemand durchliesst weil es (selbst für mich) irgendwie zu verwirrend ist - ich verstehe es eben einfach nicht wieso diese dumme komponente so seltsame sachen nach sich zieht.
Einen versuch ist es aber zumindest wert.
Also Danke schonmal für jeden Hilfeversuch
mfg
Helmut