Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - array Problem ( dynamisch oder statisch)
delphinia - Mo 12.12.05 08:20
Titel: array Problem ( dynamisch oder statisch)
Hallo
habe vorher dieses gehabt
Delphi-Quelltext
1: 2: 3: 4: 5:
| Sig_Code: array[0..3] of 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
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 - Mo 12.12.05 10:41
Hi,
probier mal bitte statt:
Delphi-Quelltext
1:
| FS.Write(Sig_Code, sizeof(Sig_Code)); |
das hier:
Delphi-Quelltext
1:
| FS.Write(Sig_Code[0], sizeof(Sig_Code)); |
BenBE - 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)
opfer.der.genauigkeit - Mo 12.12.05 13:51
BenBE 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!