Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
812to816
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
812to816
812to816
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Unsigned Long aus Binär Datei einlesen

Unsigned Long aus Binär Datei einlesen
27.10.2006 13:16:49
Marco
Halllo liebe Excel Gemeinde,
ich suche leider schon seit Stunden eine Lösung eine Preisdatei in Excel einzulesen, laut Dateibeschreibung ist der Datentyp unsigned long, leider beherrscht VBA nur den Typen Long.
Type Datensatz
Teilenummer As String * 14
Preis As Long
End Type
Open "Y:\Temp\PREIS.ORG" For Random As #1 Len = Len(DSatz1)
For Position = 1 To 10
Get #1, Position, DSatz1
Cells(Position, 1).Value = DSatz1.Teilenummer
Cells(Position, 2).Value = DSatz1.Preis
Next Position
Close #1 ' Datei schließen.
hat irgendwer eine Idee?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Unsigned Long aus Binär Datei einlesen
27.10.2006 14:01:25
ingUR
Hallo, Marco,
erst einmal gibt es nach meiner Kenntnis keinen Unterschied in der Anzahl der Bytes zwischen dem Datentyp unsigned long und long in einem System.
Wichtig ist nur, dass die erzeugte Anzahl der Bytes für den Datentyp mit der Anzahl der Bytes übereinstimmt, die EXCEL für seinen Datentyp long benutzt, die gleiche Speicheranordnung vorausgesetzt.
Nun ist die Frage, ob es denn überhaupt Preise in dieser, durch den Datentyp unsigned long ermöglichten Größenordnung gibt und nicht das normale Einlesen als long die gewünschten Ergebnisse liefert; aber wenn es da kein Problem geben würde (welcher Fehler tritt auf?), dann hättest Du möglicherweise nicht den beitrag geschrieben).
Ist das nicht so, dann müßtest Du die Anzahl der Bytes für den gespeicherten Datentyp unsigned long einlesen und daraus dann über die eine HexaDez-Rechnung den entsprechenden Wert errechnen. Dazu ist es aber notwendig, dass Du erkennen kannst, in welcher Reihenfolge die Bytes des long-Typs gespeichert sind (überprüfen des Byt-Musters für eine bekannten Zahl). Sofern dieser Weg notwendig wird und es treten Fragen zur Umsetzung auf, dann währe es gut, wenn der Speicherauszug eines Datensatzes vorliegt.
Sofern Datensätze mit unsigned long zurückzuschreiben sind, dann gilt prinzipiell das Geschriebene analog.
Guß,
Uwe
Anzeige
AW: Unsigned Long aus Binär Datei einlesen
27.10.2006 14:32:15
Marco
Hallo Uwe,
also es stimmt schon das das unsigned long auch 4 Bytes lang ist. Ich weiss z.B. das der Preis einer Position 34 sein müsste, beim auslesen mit Long kommt ein 52 raus. Was schon mal falsch sein muss. Mit welcher Funktion kann ich auf die einzelnen Bits zurückgreifen?
MfG
Marco
AW: Unsigned Long aus Binär Datei einlesen
27.10.2006 15:44:38
ingUR
Hallo, Marco,
das sieht mir eher nach einem Datensatzfehler (oder einer falschen Typendefinition) aus, denn 52d (52 als Dezimalwert) enspricht einem Byte-Muster von [34 00][00 00]h ([niederstelliges Doppelbyte][höherstelliges Doppelbyte]h in Hexadezimalschreibweise), während das Bytemuster für 34d aus folgenden Doppelbytes (WORD) besteht: [22 00][00 00]h.
Wenn Du nun also vier Bytes (ByteLL, ByteLH, ByteHL, ByteHH oder als Vektor (HByte(4)) nacheinader je Datensatz anstelle des Longwertes Preis in Deinen Datensatz aufnimmst, so liefert folgende Rechnung den Dezimalwert für eine unsigned long Variable:
Wertd = ByteLL + 256*(ByteLH + 256*(ByteHL + 256*ByteHH)
oder
Wertd = S[i=0...3](HByte(i)*256^i)
Diese ist jedoch in VBA-Excel nicht darstellbar (Überlauf), so dass der Teil ByteHH nur mit der linken Bytehälfte eingesetzt werden kann (IF ByteHH > 127 THEN Überlauf!). Es ist also der Wertebereich zu klären, ob tatsächlich Werte (Ziffernfolgen) über 2147483647 auftreten können.
Gruß,
Uwe
Anzeige
AW: Unsigned Long aus Binär Datei einlesen
27.10.2006 18:40:30
Reinhard
Hi Marco,
da gehts zwar um was anderes , aber die führen da Bit Funktionen durch.
https://www.herber.de/forum/archiv/812to816/t812519.htm
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..

228 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige