Einzelnen Beitrag anzeigen

TRBB

Registriert seit: 31. Okt 2007
18 Beiträge
 
Delphi 7 Professional
 
#1

Sehr dynamische Speicherverwaltung

  Alt 30. Apr 2009, 11:06
Guten Tag,
ich möchte einen sehr effizienten Vokabelübersetzer programmieren und muss dazu eine SEHR große Textdatei (mit den Vokabeln einlesen).


Dies geschieht zurzeit mit einem FileStream
Delphi-Quellcode:
setLength(fBuffer^, fLen); // fBuffer ist ein zeiger auf einen ^AnsiString
fStream.ReadBuffer(PChar(fBuffer^)^, fLen);
Nun werden die Vokabeln herausgelesen (diese sind durch ' :: ' getrennt).
Ich lese nun die einzelnen zeichen aus um die Trennfelder zu bekommen und zwar über fBuffer^[i].

Habe ich eine Vokabel gefunden (ich speichere sie im Beispiel mal als einzelne Chars) muss ich sie aus dem String fBuffer herauskopieren und in einer neuen Stelle im Speicher ablegen.


--Nun die Frage--
Gibt es eine Möglichkeit, dass ich direkt den von fBuffer belegten Speicher weiterverwende und nur manche Stellen wieder frei geben?
zum Beispiel folgendermaßen:
Delphi-Quellcode:
fChar := @fBuffer^[1];
fVokabChar := @fBuffer^[2];
fVokabChar2 := @fBuffer^[3];
// jetzt alles andere (hier nur char 1) löschen und nur fVokabchar behalten:
dispose(fChar);
//und dann den nächsten buffer holen (und wieder selbiges vorgehen)
new(fBuffer);
// fVokabChar und fVokabChar2 sollen weiter verwendbar sein
showMessage(fVokabChar^);

Ich hoffe es ist einigermaßen klar geworden was ich vor habe.

Mfg
TRBB
  Mit Zitat antworten Zitat