Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   untypisierte dateien (https://www.delphipraxis.net/150104-untypisierte-dateien.html)

khh 8. Apr 2010 08:53

Re: untypisierte dateien
 
Zitat:

Zitat von Klaus01
Guten Morgen,

hast Du auch eine Beschreibung zu dem Datensatz?

Grüße
Klaus

leider nein, die Daten stammen aus eine uraltprogramm.
Ich brauch nur den Namen, also im Beispiel "Mailänder-Schnitte" , die Artikelnr "102" und den Preis 1.200

DeddyH 8. Apr 2010 08:56

Re: untypisierte dateien
 
Wurden die Daten evtl. unter DOS angelegt? Dann könnte eine Umwandlung mit OEMToChar helfen.

khh 8. Apr 2010 08:57

Re: untypisierte dateien
 
Zitat:

Zitat von DeddyH
Wurden die Daten evtl. unter DOS angelegt? Dann könnte eine Umwandlung mit OEMToChar helfen.

ja ist ein altes DOS-Programm
EDIT: heisst dann ich muss byte für byte mit oemtochar durchgehen?

DeddyH 8. Apr 2010 09:14

Re: untypisierte dateien
 
Nein, OEMToChar verarbeitet ganze Strings.

khh 8. Apr 2010 09:25

Re: untypisierte dateien
 
ich hab jetzt
mit:

Delphi-Quellcode:
    read(f,datensatz);
    test:=datensatz.zeile;
    name := datensatz.name;
    oemtochar(PChar(test),PChar(test2));
    oemtochar(PChar(name),PChar(name2));
die ersten 100 byte eingelesen, wobei Zeile 75 byte und Name 25 byte gross ist.

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]

khh 8. Apr 2010 09:50

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?

DeddyH 8. Apr 2010 10:04

Re: untypisierte dateien
 
Du könntest die Datei z.B. in einen TMemoryStream laden und dessen Methoden dann anwenden (Seek, Read, ReadBuffer, etc.).

khh 8. Apr 2010 10:07

Re: untypisierte dateien
 
Zitat:

Zitat von DeddyH
Du könntest die Datei z.B. in einen TMemoryStream laden und dessen Methoden dann anwenden (Seek, Read, ReadBuffer, etc.).

klingt gut, werd ich mir dessen Methoden mal genauer anschaun.

Danke

p80286 8. Apr 2010 10:20

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:
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 dann entweder im Debugger anschauen was in dem Record steht, oder eine Printausgabe machen oder ....

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!

DeddyH 8. Apr 2010 10:24

Re: untypisierte dateien
 
Zitat:

Zitat von p80286
Zunächst würde mich mal interessieren wo dieses seltsame "OEMtoChar" herkommt. in meiner Onlinehile finde ich da nichts.

MSDN-Library durchsuchenOEMToChar


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:28 Uhr.
Seite 2 von 4     12 34      

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