![]() |
objekte als Stringliste bzw. Strings mit Daten erstellen
Hab hab es mal vor einen Jahr geschaft, einen String Objekte zu zu ordnen. Doch leider weiß ich nemmer wie. Hintergrund ist derer, das in einen Combofeld Bücher stehen, doch diese Bücher sollen bestimmte Rückgabe-Werte haben. Also beispiel:
Buch 1: Name (als socher wird es auch in die Stringliste eingetragen): Normans Lexikon Buchnr: 1 Seiten: 135 ... Buch2: Name: Bertelsmann Bibliothek Buchnr: 7 Seiten: 199 .. Wer kann helfen? |
Re: objekte als Stringliste bzw. Strings mit Daten erstellen
Moin Taladan,
schau Dir mal die Methode AddObect der ComboBox.Items an. Das Objekt muss dann nur in irgendeiner Form die zusätzlichen Daten enthalten, z.B. in dem es sich um die Adresse einer Variablen handelt. Die Variable wiederum ist von einem selbstdefinierten (Record-) Typ, der die Zusätzlichen Daten enthält. Wichtige Einschränkung: Mit TMemo bzw. TRichEdit Lines funktioniert das nicht, da hier immer nil Objekt gespeichert wird. |
Re: objekte als Stringliste bzw. Strings mit Daten erstellen
hallo,
also am einfachsten wär es wahrscheinlich, ein arrayzu vereinbaren: Tbooks = record name: string; pages: Integer; end; ... var books: array of Tbooks; ... ich finds so am einfachsten. außerdem find ich, dass man wegen der struktur sehr leicht auf die daten zugreifen kann. Du kannst aber auch die einzelnen wörter durch trennzeichen in ein string schreiben: buch1/seiten1-buch2/seiten2... das find ich allerdings immer n' bisschen viel auslese-arbeit(string zerpflücken...) tschüss, heiopei |
Re: objekte als Stringliste bzw. Strings mit Daten erstellen
Delphi-Quellcode:
type
TBuch = record bezeichnung: String; alter: Byte; end; [...] TMyClass = class(TObject) private function fgetBuchbez(AValue: String): TBuch; { Private declarations } public property Buch[Buchbez: String]: TBuch read fgetBuchbez; end; [...] function TMyClass.fgetBuchbez(AValue: String): TBuch; begin if AValue = 'Buch1' then begin result.bezeichnung := 'Delphi Kochbuch'; result.alter := 5; end else begin result.bezeichnung := 'undefined'; result.alter := 0; end; end; |
Re: objekte als Stringliste bzw. Strings mit Daten erstellen
|
Re: objekte als Stringliste bzw. Strings mit Daten erstellen
Hab eine eigene Unit dafür Angelegt.
Delphi-Quellcode:
Dann in der Formularunit
unit UnitInclude;
interface type TBuch = record BuchName : String; BuchNr : Integer; end; type TBuecher = class(TObject) private function fgetBuchbez(AValue: String): TBuch; { Private declarations } public property Buch[Buchbez: String]: TBuch read fgetBuchbez; end; implementation function TBuecher.fgetBuchbez(AValue: String): TBuch; begin if AValue = '1' then begin result.BuchName := 'Helden'; result.BuchNr := 1; end else begin result.BuchName := 'undefined'; result.BuchNr := 0; end; end; end.
Delphi-Quellcode:
Aber ich bekomme immer Fehlermeldung das ein Array-Typ benötigt wird.
[..]
var buch : Tbuch; begin ComboBoxBuch.Items.Clear; ComboBoxBuch.Items.AddObject(Buch.BuchName[1], Buch[1]); end; [..] |
Re: objekte als Stringliste bzw. Strings mit Daten erstellen
du definierst buch so
Delphi-Quellcode:
und versuchst dann
property Buch[Buchbez: String]: TBuch read fgetBuchbez;
Delphi-Quellcode:
Wenn du dir das genau anschaust wirst du sehen das bei der Definition ein String in der Klammer steht. Sollte folgendermaßen aussehen
Buch.BuchName[1]
Delphi-Quellcode:
oder du änderst die Definition in
ComboBoxBuch.Items.AddObject(Buch['1'].BuchName, TObject(@Buch['1']));
Delphi-Quellcode:
so das der Aufruf dann
property Buch[Buchbez: Integer]: TBuch read fgetBuchbez;
Delphi-Quellcode:
lautet. Allerdings müsstest du dazu auch noch "fgetBuchbez" anpassen (von String auf Integer)
ComboBoxBuch.Items.AddObject(Buch[1].BuchName, TObject(@Buch[1]));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:43 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