Einzelnen Beitrag anzeigen

Maiky

Registriert seit: 14. Nov 2006
54 Beiträge
 
#4

Re: Komponente erweitern

  Alt 14. Nov 2006, 18:20
Danke für die Hilfe!! Ich dachte es wäre nun soweit, aber in CBuilder sagt er bei:
MeineKomponente->MyItems->Add("huhu,1,2) Speichererror

Vielleicht jemand der sieht warum?
Ich mach den Quelltext in Texteditor und compiliere per Commandline ~.~

Delphi-Quellcode:
PDaten = ^TDaten;
TDaten = Record
   Name: WideString;
   Anzahl: Integer;
   WertProStueck: Integer;
end;

TDatenArray = class
private
   SList: TList;
public
   constructor Create;
   destructor Destroy;
   function Read(Index: Integer) : PDaten;
   procedure Add(Name: WideString; Anzahl: Integer; WertProStueck: Integer);
   procedure Delete(Index: Integer);
   function Count : Integer;
end;



// MAIN KOMPONENTE
MeineKomponente = class(TComponent)
private
   FMyItems : TDatenArray;
published
   property MyItems: TDatenArray read FMyItems;
end;



constructor TDatenArray.Create;
begin
   SList := TList.Create;
end;

destructor TDatenArray.Destroy;
begin
   SList.Free;
end;

procedure TDatenArray.Add(Name: WideString; Anzahl: Integer; WertProStueck: Integer);
var
   DatenVariable: PDaten;
begin
   new(DatenVariable);
   DatenVariable^.Name := Name;
   DatenVariable^.Anzahl := Anzahl;
   DatenVariable^.WertProStueck := WertProStueck;
   SList.Add(DatenVariable);
end;

function TDatenArray.Read(Index: Integer) : PDaten;
begin
   Result := nil;
   if ((Index>=0) AND (Index<SList.Count)) then
   begin
   Result := SList.Items[Index];
   end;
end;

function TDatenArray.Count : Integer;
begin
   Result := SList.Count;
end;

procedure TDatenArray.Delete(Index: Integer);
var
   daten : PDaten;
begin
   if ((Index>=0) AND (Index<SList.Count)) then
   begin
      daten := SList.Items[Index];
      SList.Delete(Index);
      Dispose(daten);
   end;
end;
  Mit Zitat antworten Zitat