AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign try finally except Compiler hint H2077 Value assigned to 'Xyz' never used
Thema durchsuchen
Ansicht
Themen-Optionen

try finally except Compiler hint H2077 Value assigned to 'Xyz' never used

Ein Thema von Rollo62 · begonnen am 19. Apr 2017 · letzter Beitrag vom 19. Apr 2017
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
4.248 Beiträge
 
Delphi 12 Athens
 
#1

AW: try finally except Compiler hint H2077 Value assigned to 'Xyz' never used

  Alt 19. Apr 2017, 11:04
Dankesehr für die Antworten und die Mühe.

Ich habe das Beispeil von Günther noch etwas erweitert, um mal genau zu sehen was eigentlich passiert,
siehe Anhang.

Ihr habt natürlich Recht (und der Compiler-Hint auch), ein bischen Nachdenken hilft immer

Delphi-Quellcode:
procedure p();
begin
   raise EProgrammerNotFound.Create('nope');
end;

function TForm1.fCrashable(bShallCrash : Boolean): Integer;
begin
   Result := 88; //H2077 Auf 'f' zugewiesener Wert wird niemals benutzt

   Memo1.Lines.Add( '- In fCrashable.Vorgabe: Result = ' + Result.ToString );

   try
      if bShallCrash then
      begin
          p();
      end;
      Result := 42-1;

      Memo1.Lines.Add( '- In fCrashable.Zwischenwert: Result = ' + Result.ToString );

   finally
      // nothing
      Inc(Result);

      Memo1.Lines.Add( '- In fCrashable.finally: Result = ' + Result.ToString );
   end;


end;

procedure TForm1.Button1Click(Sender: TObject);
var
  iRes: Integer;
begin

   try
      iRes := 1000;

      Memo1.Lines.Clear;
      Memo1.Lines.Add( 'Ohne Crash' );

      iRes := 77; // diese Vorgabe ist überflüssig wenns nicht crasht

      Memo1.Lines.Add( '- Variable vordefiniert auf 77' );

      Memo1.Lines.Add( '- Aufruf fCrashable( False )' );


      iRes := fCrashable(False);

      Memo1.Lines.Add( '- Ergebnis: Result = ' + iRes.ToString );

   except
      Memo1.Lines.Add( '- Exception: Result = ' + iRes.ToString );
   end;


end;


procedure TForm1.Button2Click(Sender: TObject);
var
  iRes: Integer;
begin

   try
      Memo1.Lines.Clear;
      Memo1.Lines.Add( 'Mit Crash' );

      iRes := 77; // diese Vorgabe wird übernommen, im Fall eines Crashes

      Memo1.Lines.Add( '- Variable vordefiniert auf 77' );

      Memo1.Lines.Add( '- Aufruf fCrashable( False )' );

      iRes := fCrashable(True); // Diese Zuweisung wird NICHT ausgeführt bei Crash

      Memo1.Lines.Add( '- Ergebnis: Result = ' + iRes.ToString );

   except
      Memo1.Lines.Add( '- Exception: Result = ' + iRes.ToString );
   end;


end;
Das Ergebnis sieht dann so aus:

Clipboard01.jpg

Clipboard02.jpg

Viellleicht hilft es ja dem nächsten auch wieder auf die Sprünge.
Ich muss mich jedenfalls wohl mal wieder um ein paar alte Leichen bei mir kümmern.

Rollo
Angehängte Dateien
Dateityp: zip T060_TryFinally.zip (53,2 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:37 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-2025 by Thomas Breitkreuz