![]() |
Delphi-Version: XE
[gelöst] integer <> integer bei TObjectList.Last?
Hallo und Entschuldigung für den kryptischen Titel, mir ist nichts Besseres eingefallen.
Vielleicht gibt es eine einfache Lösung für meine Problem, vielleicht bin ich auch momentan nur blind? Ich versuche, mittels TryStrToInt einen string in einen integer zu wandeln
Delphi-Quellcode:
funktioniert auch wunderbar. Das hier
const
ITEMSHEET_COLUMN_ITEMID = 1; var id, startRow, row : Integer; [...] FItems.Add(TItemPriceInfo.Create); TryStrToInt(_data[startRow + row, ITEMSHEET_COLUMN_ITEMID - 1], id); //<----- FItems.Last.itemID := id;//<-----
Delphi-Quellcode:
aber wirft mir einen Fehler um die Ohren!
TryStrToInt(_data[startRow + row, ITEMSHEET_COLUMN_ITEMID - 1], FItems.Last.itemID); //<-----
Dabei habe ich verwendet:
Delphi-Quellcode:
Der Fehler lautet:
type TItemPriceInfo = class(TObject)
private FItemID : Integer; [...] public [...] property itemID : Integer read FItemID write FItemID; end; type TStringMatrix = array of array of string; var _data : TStringMatrix; FItems : TObjectList<TItemPriceInfo>; Zitat:
Die Umwandlung über eine Zwischenvariable klappt, die direkte Zuweisung nicht... kann mir das einer erklären? Was habe ich übersehen? |
AW: integer <> integer bei TObjectList.Last?
Der letzte Parameter ist ein var-Parameter. Da kannst du nur eine Variable und keine Property angeben.
|
AW: integer <> integer bei TObjectList.Last?
Stell dir vor, als wenn Property immer einen Getter und Setter hätten und schon fällt einem auf, warum man dieses nicht als Var-Parameter nutzen kann.
Wenn du an der Stelle auf das interne
Delphi-Quellcode:
Zugriff hast, dann würde es funktionieren.
FItems.Last.FItemID
Und warum verwendest du eigentlich TryStrToInt, wenn du den Rückgabewert nichtmal benutzt? Da kannst du auch gleich StrToIntDef verwenden und hättest da im Fehlerfall wenigstens keinen Zufallswert. Außerdem kannst du das direkt an dein Property übergeben (genauer würde es direkt an den Setter weitergeleitet). |
AW: integer <> integer bei TObjectList.Last?
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
Dass es da
id := -1;
TryStrToInt(..., id); Fitems.Last.FItemID := id;
Delphi-Quellcode:
gibt, habe ich irgendwie ganz vergessen. Danke für die Erinnerung.
StrToIntDef
|
AW: integer <> integer bei TObjectList.Last?
Dann verlässt du dich aber auf die Implementierung vom TryStrToInt, welcher auch bei einem Fehler 'ne halbe Zahl im Result haben könnte.
Das Result solcher Funktionen besagt grundsätzlich erstmal nur, daß bei TRUE der Rückgabewert "gültig" ist. Ob bei FALSE der Wert unverändert oder sonstwas enthält, ist nicht definiert. Zitat:
Delphi-Quellcode:
FItems.Last.ItemID := StrToIntDef(..., -1);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 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