Autor Beitrag
Blue_Liquid
Hält's aus hier
Beiträge: 14

WinXP
D7 Enterprise
BeitragVerfasst: Mi 12.05.04 15:30 
Hallo,

folgendes Problem...

Mein kleines Programm stürzt wenn ich bei einem Open-Save Dialog auf Abbrechen drücke ab.

was kann ich dagegen tun?

Hilfe auch per ICQ möglich...


Danke
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.05.04 15:32 
Blue_Liquid hat folgendes geschrieben:
Mein kleines Programm stürzt wenn ich bei einem Open-Save Dialog auf Abbrechen drücke ab.

Ich könnte mir einen Grund vorstellen, aber ich würde gern mal das entsprechende Stück Code aus deinem Programm sehen.

Zitat:
Hilfe auch per ICQ möglich...

Davon haben andere nichts, die evtl. das gleiche ... na, sagen wir: Problem haben.


Zuletzt bearbeitet von MathiasSimmack am Mi 12.05.04 15:33, insgesamt 1-mal bearbeitet
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.05.04 15:32 
Wie rufst du ihn denn auf? :roll:
Blue_Liquid Threadstarter
Hält's aus hier
Beiträge: 14

WinXP
D7 Enterprise
BeitragVerfasst: Mi 12.05.04 15:36 
procedure TForm2.BitBtn1Click(Sender: TObject);

begin
savedialog1.Execute;
AssignFile(PflanzeDat ,savedialog1.FileName);
Rewrite(PflanzeDat);
end;
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.05.04 15:39 
Genau das haben sich Mathias und ich gedacht. Wenn du auf "Abbrechen" klickst wird der Code nach deinem Execute trotzdem ausgeführt, natürlich mit einem ungültigen Dateinamen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
if SaveDialog1.Execute then
begin
  ...;
end;
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.05.04 15:40 
Tja, habe ich mir gedacht. Execute ist eine Funktion, deren Rückgabeergebnis Auskunft darüber gibt, ob jemand den Dialog mit OK oder mit Abbrechen beendet hat. Meinst du, es macht Sinn, die Datei erzeugen zu wollen, wenn jemand den Dialog abbricht?

Schau mal in deine Delphi-Hilfe, indem du im Quellcode einfach mal mit der Maus auf "Execute" klickst und dann F1 drückst. Dann wirst du wissen, was ich meine.


Edit: @Luckie, diesmal warst du schneller. ;) Aber ich hätte ihm die Lösung nicht fertig präsentiert. Nicht in dem Fall, weil ein Blick in die Hilfe das Problem eigentlich gelöst hätte. Aber egal ...
Blue_Liquid Threadstarter
Hält's aus hier
Beiträge: 14

WinXP
D7 Enterprise
BeitragVerfasst: Mi 12.05.04 15:45 
hmmm,bin kein experte in delphi.

kannst du mir das genauer erklären. :cry:

wie kann ich genau den fehler abwehren?

_________________
... Gruss Benni
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.05.04 15:57 
Ich bin auch kein Experte. Ich hatte nur das Glück ... oder Pech (wie man das sehen will) ... dass das I-Net noch nicht verbreitet war, als ich mit der Programmierung anfing. Das heißt, ich musste notgedrungen in die Hilfe, in die Handbücher oder in Zeitschriften (Gott schütze das PC MAGAZIN - ehemals DOS International) gucken, wenn ich anhand von Quellcode was lernen/ausprobieren wollte.

In deinem Fall hat Luckie bereits den richtigen Code gezeigt -

"Execute" ist eine Funktion. Sie hat also ein Rückgabeergebnis. Klickt jemand im Dialog auf OK, dann ist dieses Ergebnis true. Klickt der User auf Abbrechen, dann ist es false. Das kannst du dir zunutze machen und sagen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if SaveDialog1.Execute { = true } then
begin
  AssignFile(...)
  { ... }
end;

Dass du "= true" nicht angeben musst, liegt an der bool'schen Logik.
ausblenden Delphi-Quelltext
1:
if SaveDialog1.Execute then					

bedeutet bereits, dass du prüfst ob das Rückgabeergebnis true ist. Ich hab´s nur als Kommentar ergänzt, damit du dir das evtl. etwas besser vorstellen kannst. Würdest du auf false prüfen wollen, müsstest du das Ergebnis mit not sozuagen "umdrehen":
ausblenden Delphi-Quelltext
1:
2:
3:
4:
if not SaveDialog1.Execute then
begin
  ShowMessage('Du Ar*** hast den Dialog abgebrochen.');
end;

In dem Fall würde die Meldung nur erscheinen, wenn jemand Abbrechen klickt.

Sei jetzt nicht sauer, aber ein paar gute Grundlagen-Tutorials (bspw. auf [url]www.delphi-source.de[/url]) solltest du dir reinziehen, bevor du richtig tief in die Materie einsteigst.

Gruß.
Blue_Liquid Threadstarter
Hält's aus hier
Beiträge: 14

WinXP
D7 Enterprise
BeitragVerfasst: Mi 12.05.04 16:00 
Ahhh,danke Matthias...

das hat mir sehr geholfen...

werd es gleich anwenden...

Danke nochmal :)

_________________
... Gruss Benni