AGB  ·  Datenschutz  ·  Impressum  







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

Unverständliche CASE-Anweisung

Ein Thema von Daniel · begonnen am 10. Mai 2012 · letzter Beitrag vom 10. Mai 2012
 
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Unverständliche CASE-Anweisung

  Alt 10. Mai 2012, 10:25
Mein D2007 schluckt's auch. Folgender Code
Delphi-Quellcode:
function Blah(myValue: Integer): string;
begin
  case myValue of
    1: Result := 'OK';
    2: Result := 'OK';
    else
      '666'; /// <-- wat? wer bist DU denn?
  end;
end;

function Blubb(myValue: Integer): string;
begin
  case myValue of
    1: Result := 'OK';
    2: Result := 'OK';
    else
      Result := '666'; /// <-- wat? wer bist DU denn?
  end;
end;
liefert folgenden Assembler-Code:
Code:
MainF.pas.39: case myValue of
004570E4 8B45FC          mov eax,[ebp-$04]
004570E7 48               dec eax
004570E8 7405             jz $004570ef
004570EA 48               dec eax
004570EB 7411             jz $004570fe
004570ED EB1C            jmp $0045710b
MainF.pas.40: 1: Result := 'OK';
004570EF 8B45F8           mov eax,[ebp-$08]
004570F2 BA18714500       mov edx,$00457118
004570F7 E86CD7FAFF      call @LStrAsg
004570FC EB0D            jmp $0045710b
MainF.pas.41: 2: Result := 'OK';
004570FE 8B45F8           mov eax,[ebp-$08]
00457101 BA18714500       mov edx,$00457118
00457106 E85DD7FAFF      call @LStrAsg
MainF.pas.45: end;
bzw.
Code:
MainF.pas.49: case myValue of
00457134 8B45FC          mov eax,[ebp-$04]
00457137 48               dec eax
00457138 7405             jz $0045713f
0045713A 48               dec eax
0045713B 7411             jz $0045714e
0045713D EB1E            jmp $0045715d
MainF.pas.50: 1: Result := 'OK';
0045713F 8B45F8           mov eax,[ebp-$08]
00457142 BA78714500       mov edx,$00457178
00457147 E81CD7FAFF      call @LStrAsg
0045714C EB1C            jmp $0045716a
MainF.pas.51: 2: Result := 'OK';
0045714E 8B45F8           mov eax,[ebp-$08]
00457151 BA78714500       mov edx,$00457178
00457156 E80DD7FAFF      call @LStrAsg
0045715B EB0D            jmp $0045716a
MainF.pas.53: Result := '666'; /// <-- wat? wer bist DU denn?
0045715D 8B45F8           mov eax,[ebp-$08]
00457160 BA84714500       mov edx,$00457184
00457165 E8FED6FAFF      call @LStrAsg
MainF.pas.55: end;
Scheinbar wird der ominöse else-Fall einfach ignoriert.
Uli Gerhardt
  Mit Zitat antworten Zitat
 


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 20:19 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