AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schleifen Problem bei TMemoryStream

Ein Thema von FreewareFire · begonnen am 28. Jul 2004 · letzter Beitrag vom 28. Jul 2004
Antwort Antwort
FreewareFire

Registriert seit: 25. Sep 2003
51 Beiträge
 
Delphi 7 Professional
 
#1

Schleifen Problem bei TMemoryStream

  Alt 28. Jul 2004, 19:59
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:
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;
ich habs schon mit repeat until versucht, while und for... irgendwas muss falsch sein, wer kann
mir helfen - Vielen Dank für jeden Tipp!

[edit=sakura] [delphi]Tags Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 12 Athens
 
#2

Re: Schleifen Problem bei TMemoryStream

  Alt 28. Jul 2004, 20:45
Wie kann denn ein Byte ($00...$ff) "-1" annehmen?
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Schleifen Problem bei TMemoryStream

  Alt 28. Jul 2004, 21:15
@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?
  Mit Zitat antworten Zitat
HaJo

Registriert seit: 28. Apr 2004
Ort: Würselen
140 Beiträge
 
Delphi 8 Enterprise
 
#4

Re: Schleifen Problem bei TMemoryStream

  Alt 28. Jul 2004, 21:27
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
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
FreewareFire

Registriert seit: 25. Sep 2003
51 Beiträge
 
Delphi 7 Professional
 
#5

Re: Schleifen Problem bei TMemoryStream

  Alt 28. Jul 2004, 21:44
Sorry, war mein Fehler - ist shortint, kein byte!

Könnt ihr mir jetzt vielleicht weiterhelfen? Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Schleifen Problem bei TMemoryStream

  Alt 28. Jul 2004, 21:45
Hi Ralf,


ist trotzdem der gleiche Code von mir.
  Mit Zitat antworten Zitat
FreewareFire

Registriert seit: 25. Sep 2003
51 Beiträge
 
Delphi 7 Professional
 
#7

Re: Schleifen Problem bei TMemoryStream

  Alt 28. Jul 2004, 22:27
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;
  Mit Zitat antworten Zitat
FreewareFire

Registriert seit: 25. Sep 2003
51 Beiträge
 
Delphi 7 Professional
 
#8

Re: Schleifen Problem bei TMemoryStream

  Alt 28. Jul 2004, 23:22
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!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz