![]() |
Schleifen Problem bei TMemoryStream
Hi Leute!
Ich habe da ein richtig doofes Problem... Ich habe einen TMemoryStream mit Daten gefüllt. In diesem muss ich nun folgendes machen: zwei einzelne Bytes einlesen (direkt hintereinander) also sowas:
Delphi-Quellcode:
ich habs schon mit repeat until versucht, while und for... irgendwas muss falsch sein, wer kann
Stream.ReadBuffer(Byte1, 1);
Stream.ReadBuffer(Byte2, 1); //Davor kommt dann die Anzahl, wie oft er die Scheife durchlaufen soll (so soll's aussehen): for anzahl := 0 to xmal do begin //und hier liegt das Problem... hier muss eine Schleife rein //die abbruchbedingung ist, wenn Byte1=0 und Byte2=-1 - dann soll er die schleife verlassen //beginn der schleife Stream.ReadBuffer(Byte1, 1); //Byte1 und 2 sind als byte definiert! Stream.ReadBuffer(Byte2, 1); //ende der schleife end; mir helfen - Vielen Dank für jeden Tipp! [edit=sakura] [delphi]Tags Mfg, sakura[/edit] |
Re: Schleifen Problem bei TMemoryStream
Wie kann denn ein Byte ($00...$ff) "-1" annehmen? :gruebel:
|
Re: Schleifen Problem bei TMemoryStream
@FreewareFire
Delphi-Quellcode:
Stream.ReadBuffer(Byte1, 1);
Stream.ReadBuffer(Byte2, 1); //Davor kommt dann die Anzahl, wie oft er die Scheife durchlaufen soll (so soll's aussehen): for anzahl := 0 to xmal do begin //und hier liegt das Problem... hier muss eine Schleife rein //die abbruchbedingung ist, wenn Byte1=0 und Byte2=-1 - dann soll er die schleife verlassen if (byte1 = 0) and (Byte2 = -1) then Break; //beginn der schleife Stream.ReadBuffer(Byte1, 1); //Byte1 und 2 sind als byte definiert! Stream.ReadBuffer(Byte2, 1); //ende der schleife end; Aber wie mischerr schon sagte, wie kann ein Byte - 1 annehmen? |
Re: Schleifen Problem bei TMemoryStream
Hallo FreewareFire,
ich sags noch mal etwas verständlicher was oben gemeint war - ein Byte kann dezimal ausgedrückt, Werte von 0 - 255 annehmen! Kann also nicht kleiner als 0 sein, hexadezimal eben $0-$FF :-) Gruß Jochen |
Re: Schleifen Problem bei TMemoryStream
Sorry, war mein Fehler - ist shortint, kein byte!
Könnt ihr mir jetzt vielleicht weiterhelfen? Danke! |
Re: Schleifen Problem bei TMemoryStream
Hi Ralf,
ist trotzdem der gleiche Code von mir. |
Re: Schleifen Problem bei TMemoryStream
Code:
Stream.ReadBuffer(Byte1, 1); Stream.ReadBuffer(Byte2, 1); //Davor kommt dann die Anzahl, wie oft er die Scheife durchlaufen soll (so soll's aussehen): for anzahl := 0 to xmal do begin //und hier liegt das Problem... hier muss eine Schleife rein //die abbruchbedingung ist, wenn Byte1=0 und Byte2=-1 - dann soll er die schleife verlassen if (byte1 = 0) and (Byte2 = -1) then Break; //beginn der schleife Stream.ReadBuffer(Byte1, 1); //Byte1 und 2 sind als byte definiert! Stream.ReadBuffer(Byte2, 1); //ende der schleife end; Ist zwar schön und gut, nur nicht korrekt - da fehlt die schleife noch! Daher das Kommentar über dem Stream! da müsste eine schleife rein, in etwa: repeat until ((byte1 = 0) and (byte2 = -1)); zusammen so: for anzahl := 0 to xmal do begin repeat Stream.ReadBuffer(Byte1, 1); //Byte1 und 2 sind als shortint definiert! Stream.ReadBuffer(Byte2, 1); until ((byte1 <> 0) and (byte2 <> -1)); end; |
Re: Schleifen Problem bei TMemoryStream
Hier die Lösung:
for APos := 0 to (doxmal - 1) do for BPos := SPosition to memstr.Size do begin if ((EndBuffer = 0) and (EndBuffer1 = -1)) then begin memstr.Position := memstr.Position + 1; break; end; memstr.Read(EndBuffer, 1); memstr.Read(EndBuffer1, 1); memstr.Position := memstr.Position -1; end; leuchtet sogar ein, oder? Danke euch allen für eure mühe! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:20 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