Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Fehler in Programm
Blamaster - Di 28.08.07 17:21
Titel: Fehler in Programm
Hi,
Das Programm wird von Delphi so normal erstellt, Delphi gibt also keinen Fehler aus. Dafür aber die Exe wenn ich sie starten möchte.
Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.FormCreate(Sender: TObject); begin if not Fileexists('einstellungen.ini') then begin Form2.Show; end; ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'einstellungen.ini'); try Winrar:= ini.ReadString('Optionen','Winrar',''); Archivpfad:= ini.ReadString('Optionen','Archivpfad',''); finally ini.Free; if Fileexists(Archivpfad+'pw.txt')then begin ListBox1.Items.LoadFromFile(Archivpfad+'pw.txt'); end; GetFilesInDirectory(Archivpfad, '*.rar*', Listbox2.Items, False, True); end; end; |
Das soll erstmal bewerkstelligen, das wenn das Ini file noch nicht existiert er erstmal nicht weiter macht sondern Form2 anzeigt.
Wie kann ich ihm nun sagen das er wirklich erst irgendwas laden darf wenn das Ini file existiert ?
Wolle92 - Di 28.08.07 17:31
1. Aussagekräftige Überschrift
2. Mehr Quellcode, Variablendefinitonen usw.
3. Fehlermeldung...
Calculon - Di 28.08.07 17:35
| Zitat: |
| Wie kann ich ihm nun sagen das er wirklich erst irgendwas laden darf wenn das Ini file existiert ? |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.FormCreate(Sender: TObject); begin if Fileexists('einstellungen.ini') then begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'einstellungen.ini'); try Winrar := ini.ReadString('Optionen','Winrar',''); Archivpfad := ini.ReadString('Optionen','Archivpfad',''); finally ini.Free; end; if Fileexists(Archivpfad+'pw.txt')then ListBox1.Items.LoadFromFile(Archivpfad+'pw.txt'); GetFilesInDirectory(Archivpfad, '*.rar*', Listbox2.Items, False, True); end else begin Form2.Show; exit; end; end; |
Ansonsten würde ich mir an deiner Stelle angewöhnen den Code an entsprechenden Stellen einzurücken. Sieht so nicht nur besser aus, sondern wird auch übersichtlicher (bei deinen
begin und
end ist z.B. das
end von
try/
finally an der falschen Stelle gelandet).
Gruß
Calculon
--
GTA-Place - Di 28.08.07 18:10
Titel: Re: Fehler in Programm
Delphi-Quelltext
1:
| if not Fileexists('einstellungen.ini') then |
Diese Abfrage prüft, ob es die Datei
C:\Windows\einstellungen.ini gibt. Da du deine Datei nicht ins Windows-Verzeichnis speicherst, wird diese Abfrage immer True ergeben.
Blamaster - Di 28.08.07 18:12
Auch mit Calculons code geht es nicht folgender Error kommt:
Project Project2.exe raised excaption class EAccessViolation with message 'Access violation at adress 00452CDE in module Project2.exe'. Read of adress 000002F4'. Process stopped. Use Step or Run to continue.
Der rest vom code ist meiner Meinung nacher eher unwichtig denn wenn ich die prozedur
if not FileExists weg mache, läuft das Programm ohne Fehler.
Kroko - Di 28.08.07 18:18
Wie bereits gesagt, keine relative Pfade, also FileExists(...) korrigieren
Blamaster - Di 28.08.07 18:25
Aber auch mit Direkter Pfadangabe kommt der Fehler.
Delphi makiert dann in der Unit folgende Zeile blau:
Application.CreateForm(TForm2, Form2);
Edit. Ich hab jetzt mal die ini Datei selber erstellt. Jetzt kann ich das Programm ganz normal starten und auch über den Optionen Button Form2 öffnen.
Er scheint also nen Problem damit zu haben gleich am Anfang form2 auf zu machen.
GTA-Place - Di 28.08.07 18:39
Logisch, wenn du das OnCreate von Form1 benutzt, existiert Form2 noch gar nicht. Nimm lieber OnShow.
Kroko - Di 28.08.07 18:42
(a) die Zeile sehe ich in Deinen Quellen nicht
(b) Du solltest natürlich erst Form2 erstellen, ehe Du sie in deiner Proc der Form1 per Form2.Show anzeigst
(c) Gibt es dort irgendeinen Überkreuzbezug?
[EDIT]
zu laaaaaaaaaaaaaaaaaannnnnnnnnnnnnnnnnggggggggggsssssssssaaaaaaaaammmmm
und
zu blind
:cry: :cry:
Blamaster - Di 28.08.07 18:45
Hi hört sich gut an wo soll den Form Show hin ?
GTA-Place - Di 28.08.07 18:46
Im Objektinspektor von Form1 Doppelklick auf OnShow.
Blamaster - Di 28.08.07 18:54
Und was soll dann ins FormShow auf Form1 rein ?
Alles was jetzt in FormCreate steht ?
Wolle92 - Di 28.08.07 19:32
*auch mal was beantworten und nicht immer nur meckern will*
Jap...
Blamaster - Di 28.08.07 19:55
Jetzt gehts. 1000 Dank euch allen. :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!