AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Rückgabewert einer Funktion: Delphi will mich reinlegen
Thema durchsuchen
Ansicht
Themen-Optionen

Rückgabewert einer Funktion: Delphi will mich reinlegen

Ein Thema von Flori · begonnen am 26. Apr 2005 · letzter Beitrag vom 26. Apr 2005
Antwort Antwort
Flori

Registriert seit: 25. Jun 2004
Ort: Südbaden
6 Beiträge
 
Delphi 7 Enterprise
 
#1

Rückgabewert einer Funktion: Delphi will mich reinlegen

  Alt 26. Apr 2005, 03:23
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:
function test(bla: integer):integer;
var hallo: integer;
begin
hallo := 1324;
result := hallo;
end;

procedure usw.
var blubb;
begin
blubb := test(48855);
end;
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...
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]
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Rückgabewert einer Funktion: Delphi will mich verarschen

  Alt 26. Apr 2005, 04:59
Hallo!

Tritt das Phänomen auch in deinem Testcode auf oder nur im Originalcode ?
Thomas
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#3

Re: Rückgabewert einer Funktion: Delphi will mich verarschen

  Alt 26. Apr 2005, 06:15
Äh, warum sollten hallo und blubb identisch sein? Der Uebergabeparameter heisst bla und wird nicht angefasst.
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#4

Re: Rückgabewert einer Funktion: Delphi will mich verarschen

  Alt 26. Apr 2005, 06:21
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:
label1.caption:=inttostr(blubb); Du wirst sehen es funktioniert dann. Der Debugger verarscht dich hier!

Rainer
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#5

Re: Rückgabewert einer Funktion: Delphi will mich verarschen

  Alt 26. Apr 2005, 06:24
Hallo Robert,

lies doch erstmal das Codebeispiel in Ruhe durch!

Zitat:
Äh, warum sollten hallo und blubb identisch sein? Der Uebergabeparameter heisst bla und wird nicht angefasst.
Was hat denn bla mit dem Rückgabewert zu tun? bla ist der Übergabewert für die Funktion. Der Rückgabewert wird mit result festgelegt.

Rainer
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#6

Re: Rückgabewert einer Funktion: Delphi will mich verarschen

  Alt 26. Apr 2005, 06:41
Schalt mal die Optimierungen aus. Wahrscheinlich hat der Compiler hallo komplett entfernt.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Rückgabewert einer Funktion: Delphi will mich verarschen

  Alt 26. Apr 2005, 07:30
also in dem beispiel ist klar das "blubb" immer "1234" ist weil test immer "1234" zurückgibt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#8

Re: Rückgabewert einer Funktion: Delphi will mich reinlegen

  Alt 26. Apr 2005, 08:35
Hi

Zitat von Flori:
Manchmal passiert es, dass hallo und blubb nicht identisch sind.
@SirThornberry: Ich denke genau darin liegt sein Problem, nämlich dass er nicht 1234 heraus bekommt... Aber ich glaube ohne konkretes Beispiel (auch gerne gekürzt) kommt man da nicht weiter.

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]
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: Rückgabewert einer Funktion: Delphi will mich reinlegen

  Alt 26. Apr 2005, 08:43
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 Delphi-Referenz durchsuchenOutputDebugString die Werte ins Log schreiben lassen, und machst den Haltepunkt erst nach dem Aufruf von Test rein. Evtl. hat ja auch nur der Debugger ein Problem.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  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 20:32 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