Ok, hier mal mit MemoryStream
Delphi-Quellcode:
var MemoryStream : TMemoryStream;
buffer : Array of Byte;
begin
// Memorystream anlegen
MemoryStream := TMemoryStream.Create;
// Datei laden
MemoryStream.LoadFromFile(FILENAME);
// Maximum aus schon existierender Dateigröße und Datei mit 23430 Byte +
// Länge des angehangenen Textes
setLength(buffer, max(23430 + length(self.Edit1.Text), MemoryStream.Size));
// kopieren der schon vorhandenen bytes aus der Datei
if MemoryStream.Size > 0 then
begin
copyMemory(@buffer[0], MemoryStream.Memory, MemoryStream.Size);
end; // if size(MemoryStream) > 0
// schreibt Edit1.Text an die Stelle 23430 (also beginnend bei)
// überschreibt auch alles was schon vorhanden ist
copyMemory(@buffer[23430], PChar(self.Edit1.Text), length(self.Edit1.Text));
// löschen der alten Daten und rücksetzen der Position im Stream
MemoryStream.Clear;
// schreibt alle erzeugten Daten
MemoryStream.Write(buffer[0], length(buffer));
// abspeichern
MemoryStream.SaveToFile(FILENAME);
// aufräumen
MemoryStream.Free;
Gut, für max brauchst du die
Unit Math und FILENAME musst du natürlich anpassen. An sich kann man da sicher noch einiges sauberer und schöner machen, ab guck erstmal ob es das ist was du möchtest. Insbesondere solltest du buffer natürlich mit 0en oder etwas anderem Definiertem füllen, denn sonst kann es natürlich sein dass da etwas unerwartetes steht und bei irgendeiner Auswertung mal nicht egal ist. Wie gesagt, es würden jetzt auch alle Daten die schon drin standen beibehalten werden. Das heißt natürlich auch, dass wenn du schon einen längeren Edit1.Text z.B. '123' abgespeichert hast und den mit '45' überschreibst stünde in der Datei ab 23430 '453', die würde also nicht überschrieben werden!
Natürlich sollte die 23430 auch als CONST definiert werden, macht Änderungen schöner, wie gesagt guck erstmal
Gruß Der Unwissende