![]() |
Re: Streams - negativen Wert mit Write schreiben???
@MacGuyver: Ich glaub du bemühst dich umsonst, es wurde bereits 3 mal oder so gepostet welchen Sourceteil die leute zum helfen brauchen und der Threadstarter rückt ihn einfach nicht raus. Wenn er nicht geholfen bekommen will dann müssen wir ihn eben allein lassen mit seinem problem, so ungern wir das auch machen. :roll:
|
Re: Streams - negativen Wert mit Write schreiben???
@FreeFire: Ich will jetzt nicht schimpfen, aber dass muss ich jetzt loswerden:
Deine 3-Punkte-Erklärung hilft gleichviel, wie wenn ich schriebe: Zitat:
mytar :x :x |
Re: Streams - negativen Wert mit Write schreiben???
Ich glaub langsam, dass FreewarFire den wert den er schreibt garnicht in seinem eigenen programm wieder verwenden will. Vermutlich hackt (völlig wertfrei) er fremde daten und kennt deren kodierung nicht. Dann ist es vermutlich kein wunder wenn am anderen ende 6000 bei rum kommt.
Hast du mal versucht einen integer zu schreiben (4 bytes)? Kennst du den benötigten datentyp? |
Re: Streams - negativen Wert mit Write schreiben???
Ich glaube eher, dass hier einige keine Ahnung haben. Wer nicht rafft, dass es nicht mehr Code gibt, der sollte mal überlegen was er da schreibt. Wohin gehen die Daten wohl, wenn ich Sie in den MemoryStream lade? Die sind im MemoryStream! MemoryStream ist der TMemoryStream! Und darin befindet sich die Datei! Um nun Daten zu schreiben, setzt man die Position an die Stelle des TMemoryStream, wo man eben was speichern will. Und die Daten, die ich speichern will, befinden sich eben an $A1 ! Ich weiß ja nicht, was ihr mit euren Records und Typen habt, aber die brauche ich hier nicht. Ich glaube ihr wisst selbst nicht, wo das Problem liegt. Ich frage mich, ob es evtl. damit zu tun hat, dass die Datei Hex-Dezimal ist und ich den Wert einfach Dezimal speichere. Nehme ich mal an. Ich versuchs einfach mal anders... Und alles andere wäre Sinnlos. Also Bitte fragt nicht nach noch mehr Code - es gibt keinen :!: :!: :!: Bitte lest vorher, dann Antwortet. Ich bin am Verzeifeln, kann euch aber nur sagen das es eben nicht mehr Code gibt. Versteht das doch.
|
Re: Streams - negativen Wert mit Write schreiben???
ich beschreibe mal unser Problem: Du hast den source gepostet womit den Wert aus dem SpinEdit in den Stream speicherst. Nun ist deine Frage warum der Wert in dem Stream nicht der Wert ist den du wirklich geschrieben hast. Woher weißt du das der Wert ein anderer ist als den du geschrieben hast wenn du in nicht wieder irgendwann aus dem stream herausliest?
Bildlich gesprochen: Du wirfst 2 Euro in einen Brunnen und fragst warum im Brunnen keine 2 Euro drin sind obwohl du nie nachschaust. |
Re: Streams - negativen Wert mit Write schreiben???
Schön.
"BuildValue := BC.Value * 10;" was ist denn BC.Value? Wieso * 10? Irgendwie werde ich das gefühl nicht los, das du das nicht verstehst. Stefan |
Re: Streams - negativen Wert mit Write schreiben???
Ach so, das auslesen mache ich nach dem die Datei gespeichert wurde mit einem Hexeditor. Per Knopfdruck wird also die Datei auf der Festplatte gespeichert. Danach kann ich sehen, dass der Wert nicht dem entspricht, den er haben müsste. Ansonsten lese ich nicht aus dem MemoryStream! Er liest die Datei ein, ändert den Wert und speichert die Datei wieder auf der Festplatte. Speichern mit SaveToFile! Ich nehme an, ich muss den SpinEdit Wert in Hex umwandeln und dann speichern, oder? Wie mache ich das? Also von int nach Hex? Danke!
|
Re: Streams - negativen Wert mit Write schreiben???
BC.Value ist das SpinEdit.
* 10 weil der Wert mit 10 multipliziert werden muss, damit er später in der Datei korrekt ist. Ist eine Datei von einem Spiel (RollerCoaster Tycoon 2). Das muss so sein. |
Re: Streams - negativen Wert mit Write schreiben???
Oh, oh. Ich nehme an, du weißt nicht wie ein SmallInt Funktioniert. 32767 ist der maximale positive Wert. Bei einem Inc kommt dann -32768 heraus. Die zwei Byte die gespeichert sind, sind lo- und hi-Byte. Der Wert +256 z. B. ist dann $00 $01. Bei +255 wäre dann die Zahl $FF $00. Den zweiten Wert mal 256 plus der erste Wert. Ist der zweite Wert > 127 ($7F) dann ist das eine negative Zahl. Du mußt die zwei Byte aus deinem Stream in eine SmallInt-Var laden und dann an den Spin übergeben. NUR so klappt das. Um nicht mit Positionen spielen zu müssen legst du einen Typen an, kann hast du da auch keine Probleme.
Stefan |
Re: Streams - negativen Wert mit Write schreiben???
Hi Stefan,
ich verstehe nicht ganz, was du meinst - ich weiß schon das der Wert eines smallint bis 32567 geht und -32568. Der Wert übersteigt aber nicht diesen Bereich. Wie kann ich jetzt einen smallint Wert in Hex konvertieren? Vielleicht klappt es dann! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 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