Autor Beitrag
megaman7de
Hält's aus hier
Beiträge: 10

Win XP Prof.
Delphi 2005
BeitragVerfasst: Fr 21.04.06 03:55 
hallo,
Ich hab eine einfache funktion zum schreiben von daten in datein.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure wr(FileName : TFilename; WriteText : string);
var
  f : Textfile;
begin
  AssignFile(f, FileName);
  try
    if FileExists(FileName) = False then
      Rewrite(f)
    else
    begin
      Append(f)
    end;
    Write(f, WriteText);
  finally
    CloseFile(f);
  end;
end;


mit der funktion war ich immer sehr zufrieden bis ich was binäres schreiben wollte...
soll heißen wenn ich z.B.

ausblenden Delphi-Quelltext
1:
wr('C:\a.txt', Char(5));					


1000-3000x aufrufe dann stimmt die ausgabegröße nicht immer....

woran liegt das?
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Fr 21.04.06 06:45 
(a) Ich habe die Proc. genau 3000x aufgrufen und die Dateigröße liegt exact bei 3000 Byte!
(b) Jetzt noch mal 30000x und die Dateigröße liegt jetzt bei 33000!
(c) Ich sehe kein Problem!

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Fr 21.04.06 07:27 
Hallo,

dass kann villeicht an Chr(26)=Strg-Z=^Z liegen, was als Dateiende von Textdateien in CP/M,DOS-Zeiten genutzt wurde.

Gruss Horst
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 21.04.06 07:32 
Auf AssignFile, Write, Append etc. sollte verzichtet werden!

Nimm lieber einen Stream, z.B. ein TFileStream.

_________________
Na denn, dann. Bis dann, denn.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 21.04.06 07:57 
user profile iconalzaimar hat folgendes geschrieben:
Auf AssignFile, Write, Append etc. sollte verzichtet werden!

Warum? Für diesen Fall ist das die einfachste Lösung. Oder ist das obsolet geworden und ich habs nicht mitbekommen? Ansonsten hast du recht. TFileStream ist in vielen Fällen die bessere Lösung.
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Fr 21.04.06 08:46 
Hallo.

wer suchet der findet ;-)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils;

procedure wr(FileName : TFilename; WriteText : string);
var
  f : Textfile;
begin
  AssignFile(f, FileName);
  try
    if FileExists(FileName) then
      Append(f)
    else
      Rewrite(f);
    Write(f, WriteText);
  finally
    CloseFile(f);
  end;
end;

var
 i : integer;

begin
  for i :=0 to 511 do
    wr('C:\a.txt', Char(i div 16));
end.


Im hex-Editor sieht man das chr(14) = $0E nicht ausgegeben wird.
[url=de.wikipedia.org/wik...erzeichen]Hier[/url] die Erklaerung.
Alle Zeichen zwischen $0E und $0F werden einem anderen Zeichensatz zugehorig behandelt.
Das Steuerzeichen selbst wird nicht ausgegeben.hier auch

Gruss Horst
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 21.04.06 20:20 
user profile iconjasocul hat folgendes geschrieben:
user profile iconalzaimar hat folgendes geschrieben:
Auf AssignFile, Write, Append etc. sollte verzichtet werden!

Warum? Für diesen Fall ist das die einfachste Lösung. Oder ist das obsolet geworden und ich habs nicht mitbekommen? Ansonsten hast du recht. TFileStream ist in vielen Fällen die bessere Lösung.

Ich find ja auch, das man immer das einfachste nehmen sollte, aber wenn Borland in der OH (D6) schreibt, dann mach ich da eine Ausnahme. Aber wenn sie die Routinen bei BDS2006 immernoch drin haben, dann weiss ich auch nicht.

Ich würde aber mal sagen, das ein TFilestream auch dezent einfacher ist, als ein AssignFile mit Append/Rewrite.

_________________
Na denn, dann. Bis dann, denn.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 21.04.06 20:40 
Dass ist die typische Konsequenz der Software-Hersteller. :mrgreen: