![]() |
Rückgabewert einer Funktion: Delphi will mich reinlegen
Hi,
ich bin völlig verzweifelt. Seit heute Mittag brüte ich über ein und dem selben Fehler in meinem Programm. Es scheint alle so insich logisch zu sein, dass mir einfach nicht auffällt was daran falsch sein soll. Abermillionen Tests führten mich letztlich zu der Beobachtung, dass, in völlig zufälligen Abständen der Rückgabewert meiner Funktion nicht dem entspricht, was dann letztendlich ankommt. Kapiert was ich meine? Hier mal zur veranschaulichung
Delphi-Quellcode:
Manchmal passiert es, dass hallo und blubb nicht identisch sind. Dieses Beispiel ist jetzt frei aus der Luft gegriffen!! Wieso passiert das? Ich will mittlerweile einfach nur noch sterben, so ein Mist...
function test(bla: integer):integer;
var hallo: integer; begin hallo := 1324; result := hallo; end; procedure usw. var blubb; begin blubb := test(48855); end; ARGH!!!! Okay, puh, jetzt gehts wieder. Mein Originalcode ist natürlich komplexer als das Beispiel, aber prinzipiell ist es gleich. Es handelt sich auch um Integer-Variablen. Ist das Phänomen bekannt.... bin ich einfach nur zu dumm.... hilfe? Danke schonmal [edit=MrSpock]Kraftausdruck entfernt. Mfg, MrSpock[/edit] |
Re: Rückgabewert einer Funktion: Delphi will mich verarschen
Hallo!
Tritt das Phänomen auch in deinem Testcode auf oder nur im Originalcode ? |
Re: Rückgabewert einer Funktion: Delphi will mich verarschen
Äh, warum sollten hallo und blubb identisch sein? Der Uebergabeparameter heisst bla und wird nicht angefasst.
|
Re: Rückgabewert einer Funktion: Delphi will mich verarschen
Hallo,
wie stellst du denn fest was in "blubb" drin steht? Mit dem Debugger? hast du die Optimierung eingeschaltet? Zeig das Ergebnis einfach mit einem Label an:
Delphi-Quellcode:
Du wirst sehen es funktioniert dann. Der Debugger verarscht dich hier!
label1.caption:=inttostr(blubb);
Rainer |
Re: Rückgabewert einer Funktion: Delphi will mich verarschen
Hallo Robert,
lies doch erstmal das Codebeispiel in Ruhe durch! Zitat:
Rainer |
Re: Rückgabewert einer Funktion: Delphi will mich verarschen
Schalt mal die Optimierungen aus. Wahrscheinlich hat der Compiler hallo komplett entfernt.
|
Re: Rückgabewert einer Funktion: Delphi will mich verarschen
also in dem beispiel ist klar das "blubb" immer "1234" ist weil test immer "1234" zurückgibt.
|
Re: Rückgabewert einer Funktion: Delphi will mich reinlegen
Hi
Zitat:
Wenn ich mal nicht weiter weiss feuere ich alle paar Zeilen ein Showmessage raus um nen groben überblick zu bekommen oder hau immer wo ein "Meilenstein" liegt eine Haltemarke rein. Ist ganz hilfreich, vor allem beim Entwickeln von DLLs. MfG Tonic [Edit] Verwendest du vielleicht nen Memorymanager oder Pointer? Manager richtig eingetragen und Pointer auch richtig verlinkt?[/Edit] |
Re: Rückgabewert einer Funktion: Delphi will mich reinlegen
Hallo Flori,
ich habe deinen Code soeben in Delphi7 Ent getestet, und hallo wurde wirklich vom Optimizer rausgeworfen. Die Zahl wird direkt in Result geschrieben. Noch was: wenn du sagst, dass hallo und blubb nicht identisch sind, welcher der beiden Werte ist richtig? Evtl. kannst du dir mal mit ShowMessage oder ![]() Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 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