vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Einlesen von Datenstrukturen aus einer Datei (erzeugt mit einer anderen Sprache) 
Autor: Schudi
Datum: 20.11.18 12:16

Hallo Manfred X,

und erst einmal vielen Dank für Deine Antwort.

Insbesondere der 2. Artikel war mir bekannt, aber es geht hier nicht um die Übergabe als Parameter sondern um einen String, der aus einer Datei gelesen wird.

Ich konkretisiere meine Anfrage mal ein wenig...

Als Beispiel nehme ich die Struktur aus meinem gestrigen Post...

Im Cobol sieht die Beschreibung so aus:

02 PFAmc pic x(10) Wert Klartext: ABCDEFGHIJ Wert hex: 41 42 43 44 45 46 47 48 49 4A
02 PFAnum pic 999 comp-6. Wert Klartext: 115 Wert hex: 01 15
02 PFAbez pic x(10). Wert Klartext: Text Wert hex: 54 65 74 78 20 20 20 20 20 20
02 PFAvki pic s9(5)v99 comp-5. Wert Klartext: 0,08 Wert hex: 08 00 00 00
02 PFAvoll Pic s9(8) comp-5. Wert Klartext: 33377- Wert hex: 9F 7D FF FF
02 PFAleer Pic s9(8) comp-5. Wert Klartext: 557 Wert hex: 2D 02 00 00

In der Datei, und somit in dem String, den ich aus der Datei einlese, sieht das so aus (in Hex):


Klartext:"ABCDEFGHIJ Text Ÿ}ÿÿŸ}ÿÿ" insgesamt 34 Byte

in hex:" 54 65 74 78 20 20 20 20 20 20 08 00 00 00 9F 7D FF FF 2D 02 00 00"


Ausgehend von dem ersten Dokument müsste das folgender Structure entsprechen:

Structure Artikel
     Dim Mc As String
     Dim Num As Integer
     Dim Bez As String
     Dim Vki As Integer
     Dim AnzVol As Integer
     Dim AnzLer As Integer
End Structure
Da VB.net keine String-Variablen mit fester Länge kennt, muss ich doch alle "Felder" einzeln aus dem String ausschneiden und in die Zielfelder übertragen, oder?

Für die Textfelder ist das noch recht einfach:

Public Sub SatzZerlegen(SatzGelesen As String)
 
       Dim myArtikel As New Artikel
 
       'Zuerst die Textfelder
       myArtikel.Mc = Mid(SatzGelesen, 1, 10)
       myArtikel.Bez = Mid(SatzGelesen, 15, 10)
 
End Sub
Aber jetzt kommen die numerischen Felder:

Die Definition S9(8) Comp-5 (4 Byte) entspricht einer Int32. Soweit ist das klar.

In der Datei stellen sich die 4 Byte in Hex wie folgt dar: 08 00 00 00

Aber ich kann mir nicht vorstellen, dass der folgende Code schon ausreicht bzw. funktioniert...

       ...
       myArtikel.vki = CInt(Mid(SatzGelesen, 26, 4))
Und spätestens für die Comp-6 definierten Felder gibt es keine Entsprechung - auch in dem genannten Dokument nicht.

Nehmen wir die Nummer : 115 im Klartext

In der Datei stellen sich die 2 Byte in Hex wie folgt dar: "01 15"

Je Ziffer also ein Halbbyte und das Ganze rechtsbündig.

Wie bekomme ich das jetzt in eine Integer? Hier muss ich doch umrechnen, oder? Aber wie?

Oder anders ausgedrückt: Wie wird aus dem 2 Byte langen String hex "01 15" wieder die Zahl 115?


Ich entschuldige mich schon mal für den langen Text und meine umständliche Erklärung, aber vielleicht ist mein Problem jetzt deutlicher geworden...
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Einlesen von Datenstrukturen aus einer Datei (erzeugt mit ei...1.354Schudi19.11.18 16:09
Re: Einlesen von Datenstrukturen aus einer Datei (erzeugt mi...856Manfred X20.11.18 09:12
Re: Einlesen von Datenstrukturen aus einer Datei (erzeugt mi...824Schudi20.11.18 12:16
Re: Einlesen von Datenstrukturen aus einer Datei (erzeugt mi...824Kuno6020.11.18 22:09
Re: Einlesen von Datenstrukturen aus einer Datei (erzeugt mi...784Schudi26.11.18 13:27
Re: Einlesen von Datenstrukturen aus einer Datei (erzeugt mi...795Kuno6026.11.18 23:40
Re: Einlesen von Datenstrukturen aus einer Datei (erzeugt mi...761Schudi27.11.18 06:10
Re: Einlesen von Datenstrukturen aus einer Datei (erzeugt mi...827effeff23.11.18 10:03
Re: Einlesen von Datenstrukturen aus einer Datei (erzeugt mi...770Schudi26.11.18 14:38

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel