Hmm wenn man von vorne her ungefär weiß wie groß, der größte Typ sein wird den man ins array legen will mach ich mir das nicht groß umstandlich.
Nehmen wir mal an dein größter Typ ist 30 kb groß.Ich weiß es ist nicht elegant aber zur übung
reichts.
Übergabe Erfolgt Typenlos, also egal was für Typen du hast.
Wichtig bei Strings diese immer mit blabla:String[größe] begrenzen sonst gibs Datensalat.
ungetestet
Delphi-Quellcode:
const Maxsize = 30720;
type
TADummy= array[0..Maxsize] of Byte;
type TDaten = record
Size: Longword;
Daten: TADummy;
end;
var
Dynarray: array of TDaten;
AnzDatensatz: integer;
// Wenn es einen neuen Pointerinhalt zu verschieben gibt dann diese Proc aufrufen
//
// Beispiel Addpointer(meinpointer^,sizeof(Deintyp);
Procedure AddPointer(var:Pointerinhalt,DatenSize:Longword);
begin
AnzDatensatz := High(Dynarray) + 1; //Wieviele Datensätze sind vorhanden
SetLength(Dynarray,AnzDatensatz + 1); //Erhöhe die Anzahl der Datensetze um eins
AnzDatensatz := High(Dynarray) + 1; //Aktuelle Anzahl der Datensätze
with Dynarray[AnzDatensatz - 1] do //
begin
Size := DatenSize;
Daten := Pointerinhalt
end;
end;
//.... der rest bleibt dir überlassen ;)
So kann man elegant seine Dynamischen Array anlegen ohne Schleifen.
Index freigeben nicht vergessen wenn man wieder seine Daten aus Dynarray ließt.
Hoffe konnte bisschen helfen.
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene
DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.