Autor Beitrag
delphinia
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

XP Pro Sp2
Delphi 5 Standard
BeitragVerfasst: Mo 12.12.05 08:20 
Hallo

habe vorher dieses gehabt

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  Sig_Code: array[0..3of Char;
begin
  Sig_code := 'Test'
  FS := TFileStream.Create(sFileName, fmCreate or fmOpenWrite);
  FS.Write(Sig_Code, sizeof(Sig_Code));


Dies war OK und die ausgabe war richtig... nun woollte ich das ganze bissel flexiblaer machen udn dachte mir dieses

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
  Sig_Code: array of Char;
code:string
begin
  l := length(Code);
  SetLength(Sig_Code, l);

  if l > 0 then
    for i := 1 to l do
    begin
     Sig_Code[i - 1] := Code[i];
    end;

   
  FS := TFileStream.Create(sFileName, fmCreate or fmOpenWrite);
  FS.Write(Sig_Code, sizeof(Sig_Code));


allerdings ist hier die Ausgabe nur noch müll
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Mo 12.12.05 10:41 
Hi,

probier mal bitte statt:
ausblenden Delphi-Quelltext
1:
  FS.Write(Sig_Code, sizeof(Sig_Code));					


das hier:

ausblenden Delphi-Quelltext
1:
  FS.Write(Sig_Code[0], sizeof(Sig_Code));					

_________________
Stellen Sie sich bitte Zirkusmusik vor.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 12.12.05 13:44 
Das hängt damit zusammen, dass bei dynamischen Arrays eine Variablen-Referenz ohne explizite Index-Angabe auf den Zeiger des ersten Elements verweist.

@opfer.der.genauigkeit: Es müsste hier sogar Length(Sig_Code) * SizeOf(SigCode[0]) heißen, um genau zu sein ...

Er kann aber auch einfach den String so streamen: FS.Write(Code[1], Length(Code)); (Bei verwendung von Ansi-Strings)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Mo 12.12.05 13:51 
user profile iconBenBE hat folgendes geschrieben:

@opfer.der.genauigkeit: Es müsste hier sogar Length(Sig_Code) * SizeOf(SigCode[0]) heißen, um genau zu sein ...


Wieder bin ich ein Opfer geworden. ;)
Den zweiten Parameter hab ich nicht beachtet, aber du hast natürlich recht.

Und um deinen ersten Satz noch zu ergänzen.
Referenzvariablen von dynamischen Arrays sind implizite Zeiger.
Wie du ja sagst, sie zeigen auf das erste Element.

_________________
Stellen Sie sich bitte Zirkusmusik vor.