AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Umwandlung von String in zahl

Ein Thema von Reini64 · begonnen am 23. Sep 2004 · letzter Beitrag vom 23. Sep 2004
Antwort Antwort
Reini64

Registriert seit: 3. Mär 2004
Ort: Ulmen
83 Beiträge
 
#1

Umwandlung von String in zahl

  Alt 23. Sep 2004, 09:19
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;
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#2

Re: Umwandlung von String in zahl

  Alt 23. Sep 2004, 09:24
Hi,

versuch mal des:

Delphi-Quellcode:
var
  DPD:Int64;
  P:Pointer;
begin
  DPD:=StrToIntDef('934567823456',0);
  P:=@DPD;
end;
Gruss
Daniel
Daniel M.
  Mit Zitat antworten Zitat
Reini64

Registriert seit: 3. Mär 2004
Ort: Ulmen
83 Beiträge
 
#3

Re: Umwandlung von String in zahl

  Alt 23. Sep 2004, 09:39
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);
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#4

Re: Umwandlung von String in zahl

  Alt 23. Sep 2004, 09:51
wieso machst du aus einem pointer noch einen?

Delphi-Quellcode:
DPD:=StrToIntDef(dm_auftrag.q_buchungskontrolle['versand_id'],0);
P:=@DPD;
Ebene1.Data := pointer(p);
versuch es mal so:

Delphi-Quellcode:
DPD:=StrToIntDef(dm_auftrag.q_buchungskontrolle['versand_id'],0);
Ebene1.Data := @DPD;
Daniel M.
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#5

Re: Umwandlung von String in zahl

  Alt 23. Sep 2004, 09:56
okay hab den fehler, sorry...

function StrToIntDef(const S: string; Default: Integer): Integer; kann kein Int64 :-/ dann nim StrToInt64 musst du halt mit nem try und except abfangen wenn es kein gültiger wert ist.
Daniel M.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Umwandlung von String in zahl

  Alt 23. Sep 2004, 11:33
Moin!

@static_cast:
Delphi-Quellcode:
var
  DPD:Int64;
  P:Pointer;
begin
  DPD:=StrToIntDef('934567823456',0);
  P:=@DPD;
end;
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...

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
  Mit Zitat antworten Zitat
Reini64

Registriert seit: 3. Mär 2004
Ort: Ulmen
83 Beiträge
 
#7

Re: Umwandlung von String in zahl

  Alt 23. Sep 2004, 12:05
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:
   i := pos('-', TreeView2.Selected.Text);
   versandId := trim(copy(TreeView2.Selected.Text,1,i-1));
und binde versand_id in den SQL Befehl mit ein.

Danke für Eure Unterstützung


Rein64
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#8

Re: Umwandlung von String in zahl

  Alt 23. Sep 2004, 12:19
Was hier stand ist nichtig, hab jetzt auch nix mehr hinzuzufügen

Daniel
Daniel M.
  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 13:01 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