AGB  ·  Datenschutz  ·  Impressum  







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

TDataset.Locate mit ListView Integer

Ein Thema von Stewag · begonnen am 1. Mär 2018 · letzter Beitrag vom 1. Mär 2018
Antwort Antwort
Stewag

Registriert seit: 12. Jun 2008
180 Beiträge
 
Delphi 12 Athens
 
#1

AW: TDataset.Locate mit ListView Integer

  Alt 1. Mär 2018, 17:18
Hallo,

danke für die schnellen Antworten.
Habe nun fest gestellt, dass das Variant gar nicht der Grund für den Fehler war sondern der im Subitem enthaltene Zeilenumbruch.

showmessage('M'+Listview2.items[i].Subitems.Text+'M'); ergibt nämlich diese Ausgabe:

M12345
M

und nicht diese: M12345M

Die Zuweisung sieht so aus: ListItem2.SubItems.Add(qCompare2.FieldByName('ID').AsString);
Steffen
  Mit Zitat antworten Zitat
Stewag

Registriert seit: 12. Jun 2008
180 Beiträge
 
Delphi 12 Athens
 
#2

AW: TDataset.Locate mit ListView Integer

  Alt 1. Mär 2018, 17:22
... bzw. vollständige Zuweisung:

Delphi-Quellcode:
ListItem1, ListItem2: TListItem;

  ListItem2 := ListView2.Items.Add;
  ListItem2.Caption := qCompare2.FieldByName('Bezeichnung').AsString;
  ListItem2.SubItems.Add(qCompare2.FieldByName('ID').AsString);
Steffen
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#3

AW: TDataset.Locate mit ListView Integer

  Alt 1. Mär 2018, 17:32
Dann sollte das Trim ausreichen, da das u. a. führende und folgende Zeilenumbrüche wegnimmt.

Bei Stringlisten (und SubItems scheint hier dann jeweils eine zu sein (TListItem.SubItems Property)), bekommt man beim Zugriff auf Text immer einen Zeilenumbruch am Ende "mitgeliefert". Der ist bei Integer nicht so wirklich hilfreich.

Mögliche Lösung (grob und ungetestet):
Delphi-Quellcode:
if Listview1.items[i].Subitems.Count > 0 then begin
  if tdata1.Locate('ID', Listview1.items[i].Subitems[0]), []) then begin

  end;
end;
// oder
if Listview1.items[i].Subitems.Count > 0 then begin
  if tdata1.Locate('ID', StrToInt(Listview1.items[i].Subitems[0])), []) then begin

  end;
end;
// oder
if tdata1.Locate('ID', StrToInt(Trim(Listview1.items[i].Subitems.Text))), []) then begin

end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#4

AW: TDataset.Locate mit ListView Integer

  Alt 1. Mär 2018, 17:33
Zitat von Stewag:
schlägt aber fehlt mit dem Hinweis, dass "12345" kein gültiger Integer ist.
Habe nun fest gestellt, dass das Variant gar nicht der Grund für den Fehler war sondern der im Subitem enthaltene Zeilenumbruch.
Ich würde fast wetten das hätte man auch in der Fehlermelung gesehn, wenn du sie "komplett" kopiert hättest.

Strg+C im Exception-Dialog (geht in fast allen Delphi-Dialogen)
und Strg+V hier im Forum, mit [QUOTE]...[/QUOTE] drumrum.

Zitat:
Listview1.items[i].Subitems.Text
Joar, wenn SubItems z.B. eine StringList wäre
und du auch alle Subitems abfragst, anstatt nur das Gewünschte, dann wäre natülich nach jedem SubItem ein Zeilenumbruch.
Listview1.Items[i].SubItems[0] , Listview1.Items[i].SubItems[0].Text oder irgendwie so, für das erste SubItem.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Stewag

Registriert seit: 12. Jun 2008
180 Beiträge
 
Delphi 12 Athens
 
#5

AW: TDataset.Locate mit ListView Integer

  Alt 1. Mär 2018, 17:39
... sooo simpel, ihr seid klasse - vielen Dank!
Und ja, man hätte es an der Fehlermeldung sehen können
Steffen
  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 11:34 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-2025 by Thomas Breitkreuz