Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi objekte als Stringliste bzw. Strings mit Daten erstellen (https://www.delphipraxis.net/17002-objekte-als-stringliste-bzw-strings-mit-daten-erstellen.html)

Taladan 26. Feb 2004 19:04


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?

Christian Seehase 26. Feb 2004 19:08

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.

heiopei 26. Feb 2004 19:12

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

SirThornberry 26. Feb 2004 19:30

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;

Luckie 26. Feb 2004 19:33

Re: objekte als Stringliste bzw. Strings mit Daten erstellen
 
http://www.delphipraxis.net/internal...ight=addobject

Taladan 27. Feb 2004 17:41

Re: objekte als Stringliste bzw. Strings mit Daten erstellen
 
Hab eine eigene Unit dafür Angelegt.
Delphi-Quellcode:
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.
Dann in der Formularunit
Delphi-Quellcode:
[..]
var    buch : Tbuch;
begin
  ComboBoxBuch.Items.Clear;
  ComboBoxBuch.Items.AddObject(Buch.BuchName[1], Buch[1]);
end;
[..]
Aber ich bekomme immer Fehlermeldung das ein Array-Typ benötigt wird.

SirThornberry 27. Feb 2004 18:52

Re: objekte als Stringliste bzw. Strings mit Daten erstellen
 
du definierst buch so
Delphi-Quellcode:
property Buch[Buchbez: String]: TBuch read fgetBuchbez;
und versuchst dann
Delphi-Quellcode:
Buch.BuchName[1]
Wenn du dir das genau anschaust wirst du sehen das bei der Definition ein String in der Klammer steht. Sollte folgendermaßen aussehen
Delphi-Quellcode:
ComboBoxBuch.Items.AddObject(Buch['1'].BuchName, TObject(@Buch['1']));
oder du änderst die Definition in
Delphi-Quellcode:
property Buch[Buchbez: Integer]: TBuch read fgetBuchbez;
so das der Aufruf dann
Delphi-Quellcode:
ComboBoxBuch.Items.AddObject(Buch[1].BuchName, TObject(@Buch[1]));
lautet. Allerdings müsstest du dazu auch noch "fgetBuchbez" anpassen (von String auf Integer)


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