Einzelnen Beitrag anzeigen

gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: Pointer - ein schwarzes Tuch

  Alt 13. Feb 2009, 23:16
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?

  Mit Zitat antworten Zitat