![]() |
Umwandlung von String in zahl
Hi,
ich habe folgendes Problem : ich verwende Treeview und möchte mit hilfe des Pointer den Zugriff steuerern Das hat bis jetzt auch wunderbar funktioniert ! - weil mein Wert maximal 8 Stellen war also integer. Nun ist mein wert aber 12 Stellen im meinen Fall die Paket-Nr. von DPD. nun meine Frage wie kann ich die 12 stellige Zahl dem Pointer zuweisen ? Alter Code:
Delphi-Quellcode:
with TreeView2.Items Do
begin //erste Ebene Ebene1 := add(NIL,dm_auftrag.q_buchungskontrolle['versand_id'] + ' - ' + formatDateTime('DD.MM.YYYY , hh:mm:ss' ,dm_auftrag.q_buchungskontrolle['versand_datum'])); Ebene1.Data := pointer(integer(dm_auftrag.q_buchungskontrolle['versand_id'])); end; |
Re: Umwandlung von String in zahl
Hi,
versuch mal des:
Delphi-Quellcode:
Gruss
var
DPD:Int64; P:Pointer; begin DPD:=StrToIntDef('934567823456',0); P:=@DPD; end; Daniel |
Re: Umwandlung von String in zahl
das funktioniert nicht !
ich bekomme keine Wert zurück
Delphi-Quellcode:
DPD:=StrToIntDef(dm_auftrag.q_buchungskontrolle['versand_id'],0);
P:=@DPD; Ebene1.Data := pointer(p); |
Re: Umwandlung von String in zahl
wieso machst du aus einem pointer noch einen?
Delphi-Quellcode:
versuch es mal so:
DPD:=StrToIntDef(dm_auftrag.q_buchungskontrolle['versand_id'],0);
P:=@DPD; Ebene1.Data := pointer(p);
Delphi-Quellcode:
DPD:=StrToIntDef(dm_auftrag.q_buchungskontrolle['versand_id'],0);
Ebene1.Data := @DPD; |
Re: Umwandlung von String in zahl
okay hab den fehler, sorry...
Delphi-Quellcode:
kann kein Int64 :-/ dann nim StrToInt64 musst du halt mit nem try und except abfangen wenn es kein gültiger wert ist.
function StrToIntDef(const S: string; Default: Integer): Integer;
|
Re: Umwandlung von String in zahl
Moin!
@static_cast:
Delphi-Quellcode:
Bei dem Code ist aber folgendes zu beachten: Der Wert auf den der Pointer zeigt ist nach dem verlassen der Procedure höchstwahrscheinlich kurze Zeit später wieder weg, weil du einen Zeiger auf eine lokale Variable anlegst die aber ihre Gültigkeit verliert beim verlassen der Procedure...
var
DPD:Int64; P:Pointer; begin DPD:=StrToIntDef('934567823456',0); P:=@DPD; end; Ich würde mir einen Zeigertyp definieren, z.B. ein PInt64 als ^Int64 o.ä. und den dann beim hinzufügen mit New() alloziieren, Wert zuweisen und dann anfügen an den Baum. Dabei muss man aber bedenken, dass man beim schliessen der Form diese mit New() angelegten Speicherbereiche auch wieder mit Dispose() freigeben muss, denn TTreeView kümmert sich da überhaupt nicht drum. Und wenn nun die Frage ist, ob der Knoten.Data einen Zeiger oder der Zeiger eine Zahl ist, dann empfehle ich eine Definition eines Records und einen Typ in Form eines Zeiger auf den Record. Wenn man den immer anfügt, dann weiss man immer was dranne hängt am Knoten, wenn Data <> Nil ist und man kann anhand der Informationen im Record leicht unterscheiden welche Informationen wo im Record liegen... MfG Muetze1 |
Re: Umwandlung von String in zahl
ich habe das Problem jetzt wie folgt umgangen:
Da ich ja die Versand_ID anzeige kann ih sie ja aus dem string aus lesen: Beispiel: 156673407209 - 23.09.2004 11:45:03 Hier suche ich nun den Wert:
Delphi-Quellcode:
und binde versand_id in den SQL Befehl mit ein.
i := pos('-', TreeView2.Selected.Text);
versandId := trim(copy(TreeView2.Selected.Text,1,i-1)); Danke für Eure Unterstützung Rein64 |
Re: Umwandlung von String in zahl
Was hier stand ist nichtig, hab jetzt auch nix mehr hinzuzufügen ;)
Daniel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 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