Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Streams - negativen Wert mit Write schreiben??? (https://www.delphipraxis.net/27643-streams-negativen-wert-mit-write-schreiben.html)

SirThornberry 13. Aug 2004 17:25

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:

mytar 13. Aug 2004 17:29

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:

1. Ich habe mein eigenes Betriebssystem programmiert.
2. Ich hab es versucht zu starten.

Hilfe, was soll ich tun?
Um Hilfe zu geben, muss ein anderer Programmierer den Quellcode (teilweise) verstehen. Und um ihn zu verstehen muss man ihn sich erstmal anschauen. Er genötigt also den vollständigen Code (d.h. also jede nötige Variable und Typ sowie Methode die nötig ist). Dann kann er den Fehler vielleicht ausbessern. Aber ohne Quellcode einen Fehler finden, das wird schwierig, außer der Programmierer kann zaubern.

mytar :x :x

maximov 13. Aug 2004 17:42

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?

FreewareFire 13. Aug 2004 17:56

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.

SirThornberry 13. Aug 2004 17:59

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.

MacGuyver 13. Aug 2004 18:06

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

FreewareFire 13. Aug 2004 18:06

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!

FreewareFire 13. Aug 2004 18:10

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.

MacGuyver 13. Aug 2004 18:14

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

FreewareFire 13. Aug 2004 18:24

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.
Seite 3 von 5     123 45      

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