Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Aus ListView Item auslesen (https://www.delphipraxis.net/159252-aus-listview-item-auslesen.html)

Jazzman_Marburg 20. Mär 2011 13:38

Aus ListView Item auslesen
 
Hallo Gemeinde!
Ich hänge mal wieder...:oops:

In einem Listview sind in den SubItems Koordinaten (Integer) auszulesen, was ich wie folgt versuche:
Delphi-Quellcode:
X1 := StrToInt(Item.SubItems.Text);
Das gestaltet sich aber insoweit schwierig, als es zur Excpetion kommt: EConverError.

Tatsächlich sehe ich im Debugger, dass dort nicht wie erwartet eine 154 steht sondern:
Delphi-Quellcode:
'"154"'#$D#$A
(Besonders problematisch ist die Stelle nach der 4: dort sehen ' und " irgednwie wie zusammengeschweisst aus...).
Habt ihr vielleicht eine Idee, wie ich aus dem Geschwurbel eine ordentliche 154 als Integer herausschlagen kann?

Lieben Dank -- bin für jeden Hinweis dankbar!

Gruß
Jazzman

mkinzler 20. Mär 2011 13:44

AW: Aus ListView Item auslesen
 
Statt StrToInt() sollte man bevorzugr TryStrToInt(), StrToIntDef() oder Val() verwenden
TryStrToInt() bietet sich an, wenn man auf falsche Eingaben reagieren will,
StrToIntDef() nimmt bei Falscheingabe einen Defaultwert an und
Val() entfernt falsche Zusaätze -> aus '5 €' wird 5

Jazzman_Marburg 20. Mär 2011 14:02

AW: Aus ListView Item auslesen
 
Vielen Dank für die schnelle Antwort!

Das ist aber nicht ganz, was ich suche:
Also mit folgendem Code versuche ich ein Integer aus dem Item-Text herauszuoperieren:
Delphi-Quellcode:
  temp_str := Item.SubItems.Text;       // temp_str = '"31"'#$D#$A
  temp_str := String(PChar(temp_str));  // Null-Char im String-Buffer?
  temp_str := Trim(temp_str);           // Löschen Zeilentrenner

  X1 := StrToInt(temp_str);             // EConvertError, klar weil temp_str = '"31"'
Es fällt mir mit dieser Methode also schwer, die " herauszufischen, da wie gesagt am Ende die ' und " irgendwie zusammenkleben.

Gruß
Jazzman

Björn Ole 20. Mär 2011 14:19

AW: Aus ListView Item auslesen
 
Warum so aufwendig:
Delphi-Quellcode:
temp_str := Item.SubItems[0]; // temp_str = 31

Jazzman_Marburg 20. Mär 2011 15:13

AW: Aus ListView Item auslesen
 
Zitat:

Zitat von Björn Ole (Beitrag 1089848)
Warum so aufwendig:
Delphi-Quellcode:
temp_str := Item.SubItems[0]; // temp_str = 31

Weil es nichts ändert: Auch damit komme ich zu '"31"', was nicht zu einem Integer konvertiert werden kann. Die Anführungszeichen sind das Problem.

Gruß
Jazzman

Luckie 20. Mär 2011 15:16

AW: Aus ListView Item auslesen
 
Dann ersetze sie doch einfach mit StringReplace durch nichts. Ich verstehe dein Problem nicht.

Jazzman_Marburg 20. Mär 2011 15:30

AW: Aus ListView Item auslesen
 
Zitat:

Zitat von Luckie (Beitrag 1089853)
Dann ersetze sie doch einfach mit StringReplace durch nichts. Ich verstehe dein Problem nicht.

Ja, das habe ich soeben gemacht. :thumb:

Danke & Gruß
Jazzman


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:02 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