Erst mal Danke Leute, für die Hilfe.
Das was ihr geschrieben habt ist im groß und ganzen auch das, was ich aus den Tuts entnehemn konnte.
Was Pointer sind und wie sie funktionieren ist mir durchaus klar.
Natürlich habe ich das Beispiel von
nuclearping probiert, aber ich bekomme ein
EOutOfMemory - Zu wenig Arbeitsspeicher auf der Zeile
New (ppFindData);
"Ach, die Fehlermeldungen kennst! Gut!" dachte ich mir.
ppFindData weiß ja noch nicht, wohin er zeigen soll, damit das
New weiß wieviel speicher es reservieren muß.
Also
Delphi-Quellcode:
procedure TFrom1.LeseDB();
var
FindData : TCeDB_File_Data_Array;
ppFindData: PCeDB_File_Data_Array;
// ...
ppFindData := @FindData;
New (ppFindData);
Nun stürzt das Programm bereits beim Aufruf der procedure
LeseDB mit
EStackOverflow ab.
Okay. Völlig Falsch.
Könnte wohl daran liegen, dass jetzt das
New Speicher reservieren soll, der bereits reserviert ist. Oder?
Das muß ja in die Hose gehen.
Letzten Endes müsste
New eigentlich wissen, wie viel Speicher reserviert werden muß, da
PCeDB_File_Data_Array bzw.
ppFindData ein typisierter Pointer ist. Richtig ?
Aber eigentlich sollte das ganze doch auch ohne
New funktionen, denn mit
ppFindData := @FindData;
habe ich doch meinen Zeiger auf das
FindData : TCeDB_File_Data_Array ??
Knallt aber ebenfalls mit
EStackOverflow.
Jetzt bin ich der gleichen Stelle, an der ich heute Mittag schon war.
Und nu?
Die Hilfe zu New sagt:
Zitat:
Ist nicht genug Speicher für die dynamische Variable verfügbar, wird eine EOutOfMemory-
Exception ausgelöst.
Hmm ... nächste Versuch:
GetMem (ppData,SizeOf (TCeDB_File_Data_Array));
EOutOfMemory - Zu wenig Arbeitsspeicher
Bin ich echt zu blöd dafür?