AGB  ·  Datenschutz  ·  Impressum  







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

Wie arbeite ich mit "Klassen"-Listen

Ein Thema von EccoBravo · begonnen am 24. Apr 2008 · letzter Beitrag vom 25. Apr 2008
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#1

Wie arbeite ich mit "Klassen"-Listen

  Alt 24. Apr 2008, 15:14
Hallo,

Euer erster Schritt, mir in oop zu helfen war prima.

Nun gleich zu einer exotischen Anwendung von Objekten, und zwas in einer Liste.
Der folgende Code soll die Frage Euch verdeutlichen:


Delphi-Quellcode:
unit EB_Pat_Foto_Unit1;

interface

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    IniFiles,
    Dialogs, StdCtrls, ExtCtrls, FileCtrl, ShellAPI,
    SDL_ColSel, SDL_Thumbnails, ComCtrls, ShellCtrls;

type
    ...

    TSatz = class(TObject)
        Bild: TImage;
        BildName: string;
        BildNurName: string;
        BildNurPath: string;
        BildNurExt: string;
        FileName: string;
        FileNurName: string;
        FileNurPath: string;
        FileNurExt: string;

        Datum: string;
        Notiz: string;
        Checked: boolean;
    private
        Fgeb: string;
        FPatName: string;
        FID: string;
        FInhalt: string;
        function GetID: string;
        function GetPatName: string;
        function GetGeb: string;
        function GetInhalt: string;
        procedure Setgeb(const Value: string);
        procedure SetID(const Value: string);
        procedure SetPatName(const Value: string);
        procedure SetInhalt(const Value: string);
    public
        property PatName: string read GetPatName write SetPatName;
        property geb: string read Getgeb write Setgeb;
        property ID: string read GetID write SetID;
        property Inhalt: string read GetInhalt write SetInhalt;
    end;

var
    ...

    Satz: array of TSatz; // dieses wird im Folgenden
                             // Probleme machen

    ...


implementation

uses ... ;

{$R *.dfm}
//..............................................................................

procedure TForm1.FormCreate(Sender: TObject);
var
    i: integer;
    Fehler: Word;
    DatumStr: string;

begin

    ...
    Satz := TSatz.create; // und das mag der Compiler nicht
                           // wegen "array of TSatz"
                           // Instanzendeklaration
    setlength(Satz, 50);
    ...

end;

...
end.
Im Code habe ich das Problem schon markiert.
Von der Klasse TSatz will ich ein dynamisches Array instanzieren
und beim Instanz.Create gibt es Compiler-Mecker.

Wie kann ich dieses Problem wohl am besten lösen?
Gibt es da nicht irgend eine andere Lösung mit Listen oder so ?

Danke für Hilfe

E. B.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 24. Apr 2008, 15:16
Delphi-Quellcode:
inc(anz);
SetLength( satz, anz);
Satz[anz-1] := TSatz.create; // und das mag der Compiler nicht
                           // wegen "array of TSatz"
                           // Instanzendeklaration
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 24. Apr 2008, 15:29
Delphi-Referenz durchsuchenTObjectList
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 24. Apr 2008, 15:34
Hallo EccoBravo,
mit Listen und so geht das natürlich auch. Guck mal in der Hilfe nach TObjectList. Mein Vorschlag:
In Form1 deklarierst du FSatzListe : TObjectList;
In TForm1.FormCreate erzeugst du dann die Objektinstanz dazu.
Sätze in die Liste einfügen: FSatzListe.Add(TSatz.Create);

P.S.: ich war schon wieder zu langsam
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
Brainshock

Registriert seit: 26. Nov 2004
Ort: 37345
214 Beiträge
 
Delphi 7 Professional
 
#5

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 24. Apr 2008, 16:05
Da es sich nur um eine Klasse (nämlich TSatz) handelt, kann man sogar auf eine TCollection gehen.
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 24. Apr 2008, 16:11
Zitat von Brainshock:
Da es sich nur um eine Klasse (nämlich TSatz) handelt, kann man sogar auf eine TCollection gehen.
Eben nicht. Dann müsste TSatz von TCollectionItem abgeleitet sein.
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#7

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 24. Apr 2008, 17:41
Wie mache ich das in meinem Falle?

Für TObjectList brauche ich

Uses Contnrs ... Wenn ich in meinem Code:

Delphi-Quellcode:
unit EB_Pat_Foto_Unit1;

interface

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    IniFiles,
    Dialogs, StdCtrls, ExtCtrls, FileCtrl, ShellAPI,
    SDL_ColSel, SDL_Thumbnails, ComCtrls, ShellCtrls, Contnrs;

type
    ...

    TSatz = class(TObject)
        Bild: TImage;
        BildName: string;
        BildNurName: string;
        BildNurPath: string;
        BildNurExt: string;
        FileName: string;
        FileNurName: string;
        FileNurPath: string;
        FileNurExt: string;

        Datum: string;
        Notiz: string;
        Checked: boolean;
    private
        Fgeb: string;
        FPatName: string;
        FID: string;
        FInhalt: string;
        function GetID: string;
        function GetPatName: string;
        function GetGeb: string;
        function GetInhalt: string;
        procedure Setgeb(const Value: string);
        procedure SetID(const Value: string);
        procedure SetPatName(const Value: string);
        procedure SetInhalt(const Value: string);
    public
        property PatName: string read GetPatName write SetPatName;
        property geb: string read Getgeb write Setgeb;
        property ID: string read GetID write SetID;
        property Inhalt: string read GetInhalt write SetInhalt;
    end;

var
    ...

    Satz: TSatz; // hier beginnen meine
    SatzListe: TObjectList; // Unsicherheiten
    ...


implementation

uses ... ;

{$R *.dfm} 
//..............................................................................

procedure TForm1.FormCreate(Sender: TObject);
var
    i: integer;
    Fehler: Word;
    DatumStr: string;

begin

    ...
    SatzListe := TObject.Create; // hier bin ich
    for i := 0 to maxSatzZahl do // ebenfalls unsicher
        SatzListe.Add(TAstz.Create); // ...
    ...

end;

...
...

procedure TForm1.E_geborenExit(Sender:TObject);
begin
    Satz[1].geb := E_geboren.Text; // hier meckert der Compiler E2149 !!!!
end; // schon beim compilieren

...
...

end.
Jetzt könnt Ihr Euch sicherlich vorstellen, wie wenig Ahnung ich von TObjectList habe.

Ich will im Programm über einen IndexInteger auf einzelne Datensätze der Liste zugreifen.

Delphi-Quellcode:
Satz[i] := ...;

... := Satz[j];
Ja, Unwissenheit schützt vor Dummheit nicht,

Vielleicht Könnt Ihr mir da weiterhin helfen

Danke, Grüße ...

E. B.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 24. Apr 2008, 17:51
Hallo,

um auf die einzelnen Objekte zugreifen zu können,
machst du einfach das hier:

Delphi-Quellcode:
  
  TSatz(Satzliste.Items[1]).Eigenschaft:= 'bla';
TObjectlist gibt standardmäßig auch den Speicher
der Objekte wieder frei.

Edit:
Zitat von EccoBravo:
SatzListe := TObject.Create; // hier bin ich
for i := 0 to maxSatzZahl do // ebenfalls unsicher
SatzListe.Add(TAstz.Create); // ...
Du erstellt in deinem Beispiel ein Objekt und
nicht die Objektliste, aber ansonsten ist
die Vorgehensweise richtig.

Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 24. Apr 2008, 17:54
Dann typisieren wir die Liste noch und können uns das casten sparen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 25. Apr 2008, 08:06
Siehe hier: Container-Klassen in Delphi
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 21:58 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