Autor Beitrag
Josef-B
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 293

2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
BeitragVerfasst: Di 10.04.07 08:58 
Habe eine Schnittstellendatei, die ausschließlich aus hex-zahlen besteht, jede Zahl ein Byte

Diese Datei möchte ich einlesen, die Werte in dann umwandeln in Zahlen bzw. Ascii-Strings.

Habe damit mal wie folgt angefangen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
FS := TFileStream.Create(importfile, fmOpenRead);
SetLength(Str, fs.size);
FS.Read(Str[1],fs.size);
FS.Free;

zeichen := str[1];  //Das erste Zeichen des Strings

zahl := ord(zeichen);

showmessage('Dezimale Zahl :' + inttostr(zahl) + #13#10 +
            'Hexadezimale Zahl :' +  inttohex(zahl,1));

//Danach dann Zeichen für Zeichen weiter verarbeiten


Ist das so vom Ansatz her richtig, oder wie macht man das am besten?
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Di 10.04.07 09:15 
Hi,

könnte man es nicht auch mit einer TStringList machen?
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Di 10.04.07 09:40 
So wie du es machst ist es schon ok.
Könntest aber auch ein Array of Byte nehmen anstatt eines Strings, aber macht im Endeffekt keinen unterschied.
Da in s[x] ein Char steht musst du es vorher Typecasten und als Hex musst du IntToHex(wert,2) nehmen, nicht 1!.

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Di 10.04.07 09:42 
Hallo,

wieso nimmst Du nicht ein array of byte statt eines Strings?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
  ..
  arrbyte : array of byte;
  ..
begin
FS := TFileStream.Create(importfile, fmOpenRead); 
SetLength(arrByte, fs.size); 
FS.Read(arrByte[0],fs.size); 
FS.Free;
i := 0;

//For i :0 low(arrbyte) to High(arrbyte) do
  showmessage('Dezimale Zahl :' + inttostr(arrbyte[i]) + #13#10 + 
            'Hexadezimale Zahl :' +  inttohex(arrbyte[i],1));


Gruß Horst
Uups da war einer schneller..
Josef-B Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 293

2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
BeitragVerfasst: Mi 11.04.07 20:24 
Danke Euch, ich werde es dann weiter mit den Strings versuchen, nicht mit dem Array, kann ich aus meiner Sicht in dem Fall besser weiter verarbeiten.