![]() |
Re: untypisierte dateien
Zitat:
Ich brauch nur den Namen, also im Beispiel "Mailänder-Schnitte" , die Artikelnr "102" und den Preis 1.200 |
Re: untypisierte dateien
Wurden die Daten evtl. unter DOS angelegt? Dann könnte eine Umwandlung mit OEMToChar helfen.
|
Re: untypisierte dateien
Zitat:
EDIT: heisst dann ich muss byte für byte mit oemtochar durchgehen? |
Re: untypisierte dateien
Nein, OEMToChar verarbeitet ganze Strings.
|
Re: untypisierte dateien
ich hab jetzt
mit:
Delphi-Quellcode:
die ersten 100 byte eingelesen, wobei Zeile 75 byte und Name 25 byte gross ist.
read(f,datensatz);
test:=datensatz.zeile; name := datensatz.name; oemtochar(PChar(test),PChar(test2)); oemtochar(PChar(name),PChar(name2)); Leider steht in test nach dem lesen nix drin. in name steht "il?nderschnitte" und nach der Konvertierung mit oemtochar nur noch ein Leerstring :-( [edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit] |
Re: untypisierte dateien
gibts den keine Möglichkeit die einzelnen bytes direkt zu lesen?
Ich weiss ja an welcher Stelle die stehen, dann könnte man die evtl. direkt lesen? |
Re: untypisierte dateien
Du könntest die Datei z.B. in einen TMemoryStream laden und dessen Methoden dann anwenden (Seek, Read, ReadBuffer, etc.).
|
Re: untypisierte dateien
Zitat:
Danke |
Re: untypisierte dateien
Zunächst würde mich mal interessieren wo dieses seltsame "OEMtoChar" herkommt. in meiner Onlinehile finde ich da nichts.
Ich hätte Dir empfolen alle Zeichen eines Textfeldes über eine Übersetzungstabelle zu jagen und alles wäre gut. Insbesonders da einige alte DOS-Programme teilweise eine etwas eigenwillige/exotische Zeichentabelle genutzt haben. wie sieht eigentlich die Definition von Datensatz aus? Ich hab es übrigens in der Vergangenheit so gehalten, das ich das Einlesen über ein Array [0..x] of Char/Byte erledigt habe und darüber ein Record mit den richtigen Feld/Datendefinitionen gelegt habe:
Delphi-Quellcode:
und dann entweder im Debugger anschauen was in dem Record steht, oder eine Printausgabe machen oder ....
type
tMyrecord = packed record f1 : array [0..$4A] of byte; name : array [$4B..$63] of char; trenn1: byte; rest : array [$65..$3FF]; end; var buffer : array [0..1023] of char; myrecord : tMyrecord absolute buffer; gelesen : integer; ... fs:=tfilestream.create(.......); gelesen:=fs.read(buffer,sizeof(buffer)); ... Und erst wenn Du eine vernünftige Datenstruktur hast, dann erst an der Darstellung drehen, es könnte sonst sein, daß Du irgendwelche Bytes als Char interpretierst. Gruß K-H Edit: Tippfehler Warum zum Teufel wollen hier so viele immer wieder eine Datei Byte für Byte einlesen? Je größer die Datenmenge, die man liest, desto fixer geht alles. Ich versteh das nicht! |
Re: untypisierte dateien
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:28 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