![]() |
While-Schleife wird Ignoriert ?!?!
Zitat:
Warum? Hier der source:
Delphi-Quellcode:
MS.Write(s[1],1);
Inc(ByteCount); // Restliche Platz mit Füllzeichen auffüllen (Bis 256 Bytes) s := StringOfChar(#00,256-ByteCount); MS.Write(s[1],Length(s)); while ((SizeOf(FS_ED) + SizeOf(MS)) mod 256 = 0) do begin s := #00; FS_ED.Write(s,1); end; FS_ED.Position := SizeOf(FS_ED); |
Re: While-Schleife wird Ignoriert ?!?!
FS_ED und MS sind beides Objektreferenzen (Zeiger) und diese sind immer 4 Byte groß (SizeOf(...)).
D.h
Delphi-Quellcode:
liefert immer False und schleife wird nicht durchlaufen.
while ((SizeOf(FS_ED) + SizeOf(MS)) mod 256 = 0)
Delphi-Quellcode:
sollte funktionieren, da jetzt die größe des Streams (welches Du verwendest) abgefragt wird.
while ((FS_ED.Size + MS.Size) mod 256 = 0) do
|
Re: While-Schleife wird Ignoriert ?!?!
Delphi-Quellcode:
Hier wird doch FS_ED eigentlich jedesmal um 1 größer, oder?
while (FS_ED.Size + MS.Size mod 256 <> 0) do
begin s := #00; FS_ED.Write(s,1); end; Bei mir irgendwie nicht? |
Re: While-Schleife wird Ignoriert ?!?!
Der Inhalt schon die größe des Zeigers ändert sich aber nicht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz