Entwickler-Ecke
Sonstiges (Delphi) - StrToInt - IntToStr Problem [gelöst]
Luncustaf - Mo 26.05.03 10:20
Titel: StrToInt - IntToStr Problem [gelöst]
hi,
Delphi-Quelltext
1: 2: 3:
| i := StrToInt(OldestStartDate); i := i-1; OldestStartDate := IntToStr(i); |
in OldestStartDate steht ein Datum im string format -> 200211322
diesen wert übergebe ich mit StrToInt an i und ziehe von i eins ab soweit alles ok
wenn ich nun den wert zurückgeben will an OldestStartDate dann kommt dort aber nichts an.
wenn ich debugge steht in beiden variablen die richtigen werte drin - ist die letzte zeile durchlaufen steht in OldestStartDate nur ein Leerstring und ich weis nicht wieso :(
kann mir da jemand helfen?
gr??tz
Udontknow - Mo 26.05.03 10:25
Hi!
Poste bitte mehr Code, dieser ist jedenfalls korrekt.
Cu,
Udontknow
Luncustaf - Mo 26.05.03 10:32
hi,
das ist ja mein problem er ist korrekt
mehr code gibt es dazu nicht da das der anfang eines selbständigen programmteiles.
hab bilder dazu gemacht. diese sollten bald zur verfügung stehen da ich die von arbeit aus nicht hochladen kann.
hab sie einem kolleg geschickt der wird das machen *hoff* :)
gr€€tz
Delete - Mo 26.05.03 10:45
Sind i und OldestStartDate lokale Variablen?
Udontknow - Mo 26.05.03 10:47
Oldeststartdate ist eine lokale Variable, richtig? Sämtliche lokalen Variablen werden am Ende einer Prozedur deinitialisiert. Wofür berechnest du eigentlich Oldeststartdate, wenn du es dann nicht mehr benutzt?
Edit: Schon wieder einer schneller gewesen... :wink:
Cu,
Udontknow
Luncustaf - Mo 26.05.03 10:51
hi,
also i ist eine lokale variable die benutze ich nur für die berechnung von oldeststart -> OdlestStart ist eine prozedurenvariable also quasi auch eine lokale variable - der code ist danach nicht zuende also momentan steht dort noch nichts es soll aber mal was dort stehen wenn das ganze funktioniertm it der übergabe des wertes :/
gr€€tz
Udontknow - Mo 26.05.03 10:56
Es funktioniert ja schon. Es ist eben nur so, daß sämtliche lokalen String-Variablen am Ende einer Funktion/Prozedur/Methode aufgelöst werden. Wenn du also bei end abprüfst, hat jeder lokale String nur '' als Inhalt.
Aber du willst ja noch später was dazupacken, und dann wird das alles richtig sein.
Mach doch einfach mal ShowMessage(Oldeststartdate) danach, du wirst sehen, es wird korrekt ausgegeben.
Cu,
Udontknow
Luncustaf - Mo 26.05.03 10:58
hehe :)
thx euch beiden :) wida was dazu gelernt hab ich nu noch netgewusst hatte wohl bisher immer glück ;)
guddi nu kannsch weitermachen thx vielmals ;)
gr€€tz
Brueggendiek - Di 27.05.03 02:12
Hallo Lucunstaf!
Der Compiler sollte aber auch eine Warnung auswerfen, daß der zugewiesene Wert niemals benutzt wird.
Es ist möglich, daß der Linker dann die komplette Zuweisung rauswirft, weil IntToStr keine Seiteneffekte hat und das Ergebnis nicht verwendet wird.
Deshalb mein Rat: Solange Dein Programm noch nicht fertig ist, unter "Projekt - Optionen - Compiler" die Optimierung rausnehmen, dann klappt es auch mit dem Debuggen!
Ein Debugger-Zugriff auf die Variable (CTRL-F4) führt auch ins Leere - Zugriff wegen Optimierung nicht möglich!
Fazit: it's not a bug, it's a Feature!
Gruß
Dietmar Brüggendiek
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!