![]() |
Kann man diese Prozedure besser machen?
hallo zusammen!
Ich hab eine frage, Ich habe dieser Prozedure gemacht. Kann man diese Prozedure besser machen?
Delphi-Quellcode:
procedure TMainForm.Open1Click(Sender: TObject);
begin if IsModified then begin case MessageDlg('Do you want to save the current file?', mtConfirmation, [mbYes, mbNo, mbCancel], 0) of mrYes: begin Save1Click(Sender); if SocOpen then Warning2 else begin OpenDialog1.InitialDir := ExtractFileDir(Application.exename) + '\Sessions\'; OpenDialog1.DefaultExt := 'emu'; if OpenDialog1.Execute then begin Save1Click(Sender); LoadOptions(OpenDialog1.Filename); CurrentFile := OpenDialog1.FileName; MakeConnect end else begin OpenDialog1.InitialDir := ExtractFileDir(Application.exename) + '\Sessions\'; OpenDialog1.DefaultExt := 'emu'; if OpenDialog1.Execute then begin LoadOptions(OpenDialog1.Filename); CurrentFile := OpenDialog1.FileName; MakeConnect; end; end; end; end; mrNo: begin if SocOpen then Warning2 else begin OpenDialog1.InitialDir := ExtractFileDir(Application.exename) + '\Sessions\'; OpenDialog1.DefaultExt := 'emu'; if OpenDialog1.Execute then begin LoadOptions(OpenDialog1.Filename); CurrentFile := OpenDialog1.FileName; MakeConnect; end; end; end; mrCancel: ; end; end else if socOpen then Warning2 else begin OpenDialog1.InitialDir := ExtractFileDir(Application.exename) + '\Sessions\'; OpenDialog1.DefaultExt := 'emu'; if OpenDialog1.Execute then begin LoadOptions(OpenDialog1.Filename); CurrentFile := OpenDialog1.FileName; MakeConnect; end; end; end; schon mal großes DANKE im voraus Gruß Peter [edit=SirThornberry]Code-Tags durch Delphi-Tags ersetzt - Mfg, SirThornberry[/edit] |
Re: Kann man diese Prozedure besser machen?
Hallo Peter,
Zitat:
Du solltest also erstens neu gruppieren:
Delphi-Quellcode:
Zweitens solltest Du alles, was nicht unmittelbar mit einem Ereignis zusammenhängt, sondern eigenständige Maßnahmen sind, in eigene Prozeduren verlagern. Dann kannst Du solche Maßnahmen von mehreren Stellen - z.B. dem Button Save1 - aus aufrufen, bist insgesamt flexibler und programmierst übersichtlicher.
if IsModified then
begin if MessageDlg = mrYes then begin try Save1Click(Sender); except end; // bei Fehler oder mrCancel Abbruch end; end; // und jetzt alles für den neuen OpenDialog1 Viel Erfolg! Jürgen |
Re: Kann man diese Prozedure besser machen?
Zitat:
|
Re: Kann man diese Prozedure besser machen?
Danke.
Peter Kiers |
Re: Kann man diese Prozedure besser machen?
Zitat:
Also meine Empfehlung: nicht jede winzige Einzelheit reklamieren, wenn sie mit dem eigentlichen Thema nichts zu tun hat. Danke! Jürgen PS. Ich habe den Eindruck, dass Peter verstanden hat, was ich ihm sagen wollte. |
Re: Kann man diese Prozedure besser machen?
Zitat:
Gerade Konstrukte wie die von mir zitierten Zeilen sind in der gezeigten Form absolut falsch und gehören ohne Umschweife in den Papierkorb - ein Anfänger weiß das aber vielleicht (noch) nicht und kopiert sich die Zeilen einfach in seinen Code, ohne weiter darüber nachzudenken. Also meine Empfehlung: lieber vor dem Posten einmal mehr über "try..except" bzw. "try..finally" nachdenken. :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 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 by Thomas Breitkreuz