N
Irgendwie finde ich die Lösung auf meine Fragen meist selbst, aber nie bevor ich die Frage hier nicht rein gestellt habe
Das Problem ist, dass bekanntermassen Linux und Windows Zeilenenden unterschiedlich händeln. Bei Linux ist ein Zeilenende LF (Hex 0A), bei Windows ist es CR/LF (Hex 0D 0A). Der BCB hängt an jeden String Hex 0D 0A an, auch dann wenn man im String nur "\n" angegeben hat, sogar dann wenn man statt \n den Hexwert selbst (\x0A) schreibt.
Hier als Beispiel:
char buff[16];
sprintf(buff,"%s\n","Teststring");
//oder
sprintf(buff,"%s\x0A","Teststring");
Bei beiden Zeilen sollte buff den Inhalt "Teststring\n" bekommen, was
Hex 54 65 73 74 73 74 72 69 6E 67 0A sein sollte.
BCB 6 macht da aber folgendes draus:
Hex 54 65 73 74 73 74 72 69 6E 67 0D 0A
Dabei ist es egal, ob man ein Memo direkt über SaveToFile speichert, oder ob man die Strings einzeln per fputs schreibt.
Lösung:
Die Datei per fopen öffnen, aber nicht als Text, sondern als Binärdatei. Also so:
FILE *Test_File;
char *test="datei.txt";
Test_File = fopen(test,"wb");
Wichtig ist das b im fopen-Befehl. Jetzt kann man ganz normal Strings in die Datei schreiben und BCB hängt an die Strings genau das an, was man da auch haben will.
mfG, Jens