AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OpenDialog --> Abbrechen

Ein Thema von flomei · begonnen am 11. Dez 2003 · letzter Beitrag vom 12. Dez 2003
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#11

Re: OpenDialog --> Abbrechen

  Alt 11. Dez 2003, 15:56
ahhh
jetzt versteh ich
ich bin nur durcheinander gekommen wegen 'Fehler'
ja mit try/Except geht es auch
ich fand es nur besser abzufragen ob filename leer ist
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#12

Re: OpenDialog --> Abbrechen

  Alt 11. Dez 2003, 23:58
@HomerGER
Ich bevorzuge Try/Except Blöcke, da sie in ihrer Handhabung dem Exception-Handler in Oracle ziemlich ähneln.
Also entweder mache das wenn irgendein Fehler passsiert oder mach das bei dem Fehler, das bei dem, ...

[OffTopic]
Ich weiß nicht genau, wie es sich in Delphi verhält, aber in Oracle ist der schnellste Weg durch den Code zu springen, eine Exception auszulösen und weiter unten den Handler zu schreiben.
Das ShowMessage 'BlaBla' habe ich nur mit kopiert.
@Flomei nutze für Fehlermeldungen lieber MessageDlg('BlaBla', mtError, [mbOK], 0 {oder HelpContext falls in Helpfile definiert} )
das sieht einfach nicht so harmlos aus, wie 'ne simple MessageBox
Die meisten User klicken sowas zu schnell weg (ich überlege mir schon bei uns in der Firma die Stühle mit dem Programm zu verbinden und bei Zeitraum (Dlg - Klick) < 0,5 sec einen Stromschlag auszulösen
Solche User machen den Programmierer für allen Bulls*** verantwortlich )
[/OffTopic]
  Mit Zitat antworten Zitat
Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#13

Re: OpenDialog --> Abbrechen

  Alt 12. Dez 2003, 00:08
hmmm
intressantes Argument

ich setze sie nur ein wenn ein Fehler zu erwarten ist denn ich nicht erwarten kann
zb ich greife auf eine dll zu, was mach ich wenn sie weg ist ? dann halt.
von deinen standpunkt hab ich es noch nicht betrachtet
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

Re: OpenDialog --> Abbrechen

  Alt 12. Dez 2003, 00:15
@GeorgeWNewbie: Das ist aber auch nicht dein Ernst oder?
Delphi-Quellcode:
  Try
    l := TStringList.Create;
    filename := OpenDialog.FileName;
    l.LoadFromFile(filename);
    Label1.Caption := filename; // Hier steht das Programm nach der Fehlermeldung...
  Except
    l.Free;
    showmessage('Fehler aufgetreten!');
  End;
Kuck mal ins Ausgabe Fensters deines Kompilers. Nur so viel, wWrnungen sollte man ernst nehmen. Borland hat sich schon was dabei gedacht, selbige zu generieren und dem Programmierer anzuzeigen. Und wieder: Tritt keine Exception auf, wird das Objekt nicht freigegeben.

Wieder muss es richtig heißen:
Delphi-Quellcode:
var
  sl: Tsringlist;
begin
  if OpenDialog1.Execute then
  begin
    sl := TStringlist.Create;
    try
      sl.LoadFromFile(OpenDialog1.Filename);
      // tu was
    finally
      FreeAndNil(sl);
    end;
  end;
Sollte man auch nicht vorhandene Dateinamen im OpenDialog zu lassen, kann man das ganze auch so erweitern:
Delphi-Quellcode:
var
  sl: Tsringlist;
begin
  sFile := '';
  if OpenDialog1.Execute then
  begin
    if OpenDialog1.Filename <> 'then
    begin
      sl := TStringlist.Create;
      try
        sl.LoadFromFile(OpenDialog1.Filename);
        // tu was
      finally
        FreeAndNil(sl);
      end;
    end;
  end;
Exceptionen sollten da benutzt werden, wo sie Sinn machen, wenn es um Zustände geht die man eventuellnicht beeinflussen kann. Hier kann ich aber mittels einer simplen if-Abfrage sicherstellen, dass nichts passiert. Jeder try-except/finally-Block kostet Unmengen an CPU Taktzyklen und erfordert erheblichen organisatorische Aufwand was den Stack und die Register angeht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#15

Re: OpenDialog --> Abbrechen

  Alt 12. Dez 2003, 00:29
Sorry Lucky, Ich hätte nicht gedacht, dass das in Delphi so abläuft (ist schon unpraktisch sich den Speicher mit allerhand Objekten zuzustopfen)

Man kann halt nicht alle Gewohnheiten von einer DB-Sprache, wie PL/SQL auf native Sprachen z.B.: Delphi übernehmen.
Trotzdem danke werde ich in Zukunft dran denken.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: OpenDialog --> Abbrechen

  Alt 12. Dez 2003, 00:42
Zitat von GeorgeWNewbie:
Sorry Lucky, Ich hätte nicht gedacht, dass das in Delphi so abläuft (ist schon unpraktisch sich den Speicher mit allerhand Objekten zuzustopfen)
Es ist nicht nur unpraktisch, sondern kann auch gefährlich werden. Noch ein bischen unvorsichtig mit dynamischen Array rumgespielt, große Daten statisch im Speicher gehalten und dein 2 GB sind voll.
Zitat:
Man kann halt nicht alle Gewohnheiten von einer DB-Sprache, wie PL/SQL auf native Sprachen z.B.: Delphi übernehmen.
Bei leibe nicht.
Zitat:
Trotzdem danke werde ich in Zukunft dran denken.
Gern geschehen.

Nachtrag:
Warum man mit try-except-Blöcken sparsam sein sollte ist auch der, dass der Compiler für diese Ausnahmebehandlung teilweise jede Menge zusätzlichen Code generieren muss.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz