Registriert: So Feb 06, 2005 17:29 Beiträge: 187
Programmiersprache: C, C++
Hiho,
ich schreibe gerade einen kleinen Vokabeltrainer für Chinesisch. Dafür wollte ich dann mal .NET benutzen, da dort AFAIK auch intern mit Unicode gearbeitet wird. So brauch ich mir nicht viel Gedanken um das Anzeigen der Schriftzeichen zu machen. Es klappt auch alles ganz wunderbar, bis auf das Laden und Speichern aus und in Dateien.
Bisher habe ich immer Filestreams verwendet, es also auch diesmal so probiert. Für Integerwerte funktioniert das auch, nur bei strings bekomme ich jedesmal eine Fehlermeldung.
[Fehler] Main.pas(92): E2250 Es gibt keine erladene Version von 'ReadBuffer', die man mit diesen Argumenten aufrufen kann [Fehler] Main.pas(93): E2250 Es gibt keine erladene Version von 'ReadBuffer', die man mit diesen Argumenten aufrufen kann
Vielleicht kann mir ja jemand sagen woran das liegt. Ich brauch ja nichts besonderes, ich muss nur ein paar Zeichenketten in einer Datei unterbringen .
Registriert: Di Dez 02, 2003 12:47 Beiträge: 300 Wohnort: Marburg
Strings haben (im vergleich zu integer oder single Variablen oder so) keine feste Länge/Größe, daher muss mann da etwas komplizierter vorgehen. Denn in Filestreams werde die Daten einfach hintereinander weggeschrieben und dann muss mann beim laden auch wissen, wie groß die einzelnen Teile sind...
Ich benutze dazu folgende Funktionen:
Code:
PFileStream =^TFileStream;
PString=^String;
procedure SaveString(S:PString;F:PFileStream);
procedure LoadString(S:PString;F:PFileStream);
procedure SaveString(S:PString;F:PFileStream);
var
x:integer;
begin
x:=length(S^);
f.WriteBuffer(x,sizeof(integer));
if x>0
then f.WriteBuffer(S^[1],x);
end;
procedure LoadString(S:PString;F:PFileStream);
var
x:integer;
begin
f.readBuffer(x,sizeof(integer));
SetLength(S^,x);
if x>0then
f.readBuffer(S^[1],x);
end;
Da wird die länge des strings mit gespeichert und geladen.
Die schreibst du an einfach statt:
Code:
Data.ReadBuffer(string,Sizeof(string));
Data.WriteBuffer(string,Sizeof(string));
_________________ Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de
Ja eben über die BinaryWriter/BinaryReader Klassen. Denen übergibt man im Konstruktor einen Stream auf den man schreiben bzw. von dem man Lesen möchte.
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.