Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Leere Klasse von einer anderen abgeleitet (https://www.delphipraxis.net/52529-leere-klasse-von-einer-anderen-abgeleitet.html)

Bigeddie 30. Aug 2005 23:35

Re: Leere Klasse von einer anderen abgeleitet
 
hallo nochmal,

habe jetzt den Constructor in TWaregroup eingefügt
Code:
TWareGroup.create(TheStructure:TBWTable;Path:String);
begin
inherited create(TheStructure,Path)//ruft nach meinem Verständnis den Constructor in TBWData auf
end;
und in TBWData habe ich ebenfalls den Constructor direkt nach "Begin" um Inherited ergänzt und ich erhalte immernoch den selben FEHLER

Übrigens da ich unter Linux am Netz hänge und ich den Code von Hand eintrage bitte ich den Fehler bei meiner letzten Nachricht zu entschuldigen.

Grüße

Bigeddie

tigerman33 31. Aug 2005 08:23

Re: Leere Klasse von einer anderen abgeleitet
 
Nachdem Flocke und ich uns jetzt darauf geeinigt haben, beide halb Unrecht zu haben :-D :zwinker:

Daran die Zuweisung beim Constructor-Aufruf noch nachzutragen hast du gedacht, oder?
Zitat:

Delphi-Quellcode:
myWaregroup : TWaregroup;
....
mywaregroup.create(structur,Pathstring);
anstelle von
Delphi-Quellcode:
myWaregroup : TWaregroup;
....
mywaregroup := TWaregroup.create(structur,Pathstring);

(@Flocke: Da hast du übrigens vollkommen, zu 100% Recht! :???: :thumb: )

Und dass du den Konstruktor von TBWData nach deinen Angaben so aufrufen kannst wundert mich ehrlich gesagt etwas.

Bigeddie 31. Aug 2005 08:49

Re: Leere Klasse von einer anderen abgeleitet
 
habe jetzt die halbe nach damit verbracht die Variablen in TBWData beim Constructoraufruf von TWaregroup zu überprüfen.
Wwenn ich direkt mit einer Instanz von TBWData arbeite, so ist der Wert von FDatastructure von der Zuweisung des Pointers NIL und enthält nach der Zuweisung den Pointer des übergebenen Objekts.
Mache ich das mit einer Instanz von TWaregroup, so ist der Wert von FDataStructure vor der Zuweisung
Anzeige in der Watchlist
Code:
FDatastructur = Nicht verfügbarer Wert
kann es vielleicht damit zusammenhängen?

tigerman33 31. Aug 2005 09:05

Re: Leere Klasse von einer anderen abgeleitet
 
Vielleicht solltest nochmal den aktuellen Quelltext posten.

Bigeddie 31. Aug 2005 09:31

Re: Leere Klasse von einer anderen abgeleitet
 
hier nochmal der Deklarationsteil der Klasse TBWData:
Code:
TBWData = Class(TObject)
   Private
    FDataStructure: TBWTable;
    DatStrings: Tlist;
    Procedure SetDataStructure(Const Value: TBWTable);
  Published
    Property DataStructure: TBWTable Read FDataStructure Write SetDataStructure;
//    Constructor create(TheStructure: TBWTable; Path: String); Overload;
    Function GetLine(Number: word): String;
    Function Count: Integer;
    Function GetFieldContent(FieldName: String; LineNumber: Word): String;
    Function GetFieldContentwhereFieldIncl(InclField: String; InclContent:
      String; FieldName: String): TStringlist; Overload;
    Function GetColumn(FieldName: String): TStringList;
    Function GetLinesWhereFieldContains(FieldName: String; ContString: String):
      Tlist;
  Public
    Function GetFieldContentwhereFieldIncl(InclField: Word; InclContent: String;
      Fieldnr: word): TStringlist; Overload;
    Constructor create(TheStructure: TBWTable; FieldList: TList); Overload;
    Constructor create(TheStructure: TBWTable; Path: String); Overload;
  End;
der Deklarationsteil der Klasse TWaregroup
Code:
twaregroup = class(TBWData)
  public
    constructor create(TheStructure: TBWTable; Path: String);
  end;
und die constructoren:
Code:
Constructor TBWData.create(TheStructure: TBWTable; Path: String);
Var
  Buffer: TStringList;
  i: integer;
  DatLine: TDatLine;
Begin
  inherited Create;
  DataStructure := TheStructure;
  DatStrings := Tlist.Create;
  Buffer := TStringlist.Create;
  buffer.LoadFromFile(path + self.FDataStructure.DatFile);
  If self.FDataStructure.LineIdentifier <> chr(254) Then
    Begin
      For i := 0 To buffer.Count - 1 Do
        Begin
          If buffer[i][1] = self.FDataStructure.LineIdentifier Then
            Begin
              DatLine := TDatline.create(buffer[i], i);
              DatStrings.Add(DatLine);
            End;
        End;
    End
  Else
    Begin
      For i := 0 To buffer.Count - 1 Do
        Begin
          DatLine := TDatline.create(buffer[i], i);
          DatStrings.Add(DatLine);
        End;
    End;
End;

constructor twaregroup.create(TheStructure: TBWTable; Path: String);
begin
inherited create(TheStructure,Path);
end;
und der Fehler ist immernoch der gleiche

SirThornberry 31. Aug 2005 09:33

Re: Leere Klasse von einer anderen abgeleitet
 
und wie erstellst du die instanz der klasse?

Bigeddie 31. Aug 2005 09:40

Re: Leere Klasse von einer anderen abgeleitet
 
Code:
var
  myWaregroup : TWareGroup;
und der Aufruf des Constructors

Code:
myWaregroup := TWaregroup.create(TheStructure,Pfad);

Flocke 31. Aug 2005 09:47

Re: Leere Klasse von einer anderen abgeleitet
 
Ich weiß nicht, was du in SetDataStructure machst, aber sollte es im Konstruktor nicht so lauten:
Code:
[u][b]F[/b][/u]DataStructure := TheStructure;

Bigeddie 31. Aug 2005 09:52

Re: Leere Klasse von einer anderen abgeleitet
 
habe ich auch schon probiert, hilfts auch nichts, spart nur einen Aufruf

Flocke 31. Aug 2005 09:59

Re: Leere Klasse von einer anderen abgeleitet
 
Und der Fehler tritt immer noch in eben dieser Zeile auf?
Breakpoint drauf gesetzt? Inhalt von SELF? Inhalt von FDataStructure? Inhalt von TheStructure?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:32 Uhr.
Seite 3 von 5     123 45      

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