![]() |
strtoint gibt 0 zurück
Hätte nicht gedacht, dass mir folgendes solche Probleme macht:
Code:
Das Ergebnis von ein_integer ist 0 und nicht 42. Nur wieso?
ein_string:='42';
ein_integer:=strtoint(ein_string); |
Re: strtoint gibt 0 zurück
Evtl. "Anti-Fans" von Anhalter bei Borland!? :duck:
|
Re: strtoint gibt 0 zurück
Hallo,
welche Delphi Version nutzt Du? Was für ein Typ ist ein_string? (AnsiString, String, WideString)? Grüße Klaus |
Re: strtoint gibt 0 zurück
Delphi 7 Prof und es geht ohne Probs:
Delphi-Quellcode:
Ausgabe ist '42'...
var
ein_string: string; ein_integer: integer; begin ein_string:='42'; ein_integer:=strtoint(ein_string); ShowMessageFmt('%d', [ein_integer]); end; |
Re: strtoint gibt 0 zurück
Hast du "ein_integer" auch nach der Zuweisung verwendet?
(also nicht nur genau diesen Code und dann versucht es im Debugger auszulesen |
Re: strtoint gibt 0 zurück
Hier der Originalcode:
Code:
Ich öffne eine Exceltabelle und lese eine Zelle aus, in der ein Datum steht. Dieses Datum möchte ich mit einer anderen Zeit im Unix-Format vergleichen, muss aber den Umweg über einen integer gehen (lassen wir das mal so dahingestellt). Ich nehme mir also das erste und zweite Zeichen und mache daraus einen integer-Wert, den ich danach umrechne nach Unixtime. Aber es kommt immer 0 raus... die Werte davor sind aber ok.
var zeile,i: integer;
tag,monat,jahr: integer; temp,temptag: string; temp:=Excel.Cells[zeile,1].value; temptag:=temp[1]+temp[2]; tag:=strtoint(temptag); |
Re: strtoint gibt 0 zurück
Bei D2005 ergibt sich auch 42.
Gruß Wolfgang |
Re: strtoint gibt 0 zurück
wie gesagt, wenn du Tag nicht verwendest, wird es von Compiler, im Zuge der Codeoptimierung, schnell mal entfernt
und da es dann diese Variable nicht mehr gibt, zeigt der Debugger "Mißt" an. |
Re: strtoint gibt 0 zurück
Wie "siehst" du denn, dass da Müll drinnen steht?
Nur über den Debugger? Teste doch mal sowas aus...
Delphi-Quellcode:
Wie himitsu schon sagte macht Delphi die "witzigsten" Sachen im Hintergrund.
MessageDlg(temptag, mtWarning, [mbOK], 0);
oder Caption := temptag oder ... |
Re: strtoint gibt 0 zurück
Hallo,
Zitat:
Ich würde das per Copy machen
Delphi-Quellcode:
Ausserdem würde ich Präfixe verwenden:
temptag:= Copy(temp, 1, 2);
Delphi-Quellcode:
Solltest du weiter mit EnodeDate arbeiten,
var
iRow: iXXX: integer; iTag,iMonat,iJahr: integer; sTemp,sTempTag: string; sind das keine Integer, sondern Word.
Delphi-Quellcode:
wTag,wMonat,wJahr: Word;
Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:33 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 by Thomas Breitkreuz