Autor Beitrag
oOXTCOo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows XP Prof. 3
Delphi 7
BeitragVerfasst: Mi 10.06.09 00:23 
user profile iconPopov hat folgendes geschrieben Zum zitierten Posting springen:
Ich verstehe zwar noch nicht ganz was du willst, aber ich glaube du willst eine Zeile mit Hex Zahlen in zweier Werte zerlegen.

Hier eine kleine Routine die das sehr einfach macht. Sie ist zwar nicht elegant, aber auch nicht peinlich. Sie ist einfach nur einfach und verständlich.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var
  s, s2: String;
begin
  s := '0000000000000000219010000000000000180200000000000028000001FFFFFF003' +
       'C000001FFFFFF000000003F007F206F07FFFFF800005003000502000000007FFF6F' +
       '07FFFFFFFFF80000530300050221901F21901FFFFF';

  while Length(s) > 0 do
  begin
    s2 := Copy(s, 12);
    Delete(s, 12);

    ListBox1.Items.Add(s2);
  end;
end;



das wäre auch nicht schlecht gewesen, so habe ichs schon ein paar mal gemacht...

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

wenn ich so mache:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
oddresult:=strtoint(Soddresult);

FT_out_Buffer[j]:=oddresult; //<- ODD CHECKSUM   AC
memo2.lines.add('FT_out_Buffer['+ inttostr(j) +']:=' + inttostr(oddresult));



gehts zwar, aber es kommen natülich integer werte raus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
FT_out_Buffer[106]:=$FF
FT_out_Buffer[107]:=$FF
FT_out_Buffer[108]:=$01
FT_out_Buffer[109]:=$43
FT_out_Buffer[110]:=172   <-- Sollte aber $AA sein.


---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

ich denke ich habs, muss es aber noch testen...


ausblenden Delphi-Quelltext
1:
FT_out_Buffer[j]:=strtoint(soddresult); //<- ODD CHECKSUM   AC					
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Mi 10.06.09 00:45 
Was du nicht machen kannst ist ein String einem Char übergeben. Das geht nicht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  s: String;
  c: Char;
begin
  s := 'a';
  c := s;


auch wenn s nur ein Zeichen enthält.

Was aber geht ist das:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  s: String;
  c: Char;
begin
  s := 'a';
  c := s[1];


Hier wird nur ein Zeichen übergeben (die 1 steht für das erste Zechen, nicht für ein Zeichen). Aber Vorsicht! ein Char besteht immer aus einem Zeichen, ein String kann mehr Zeichen enthalten, auch auch keins.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  s: String;
  c: Char;
begin
  //s := 'a';
  c := s[1];


Hier gibt es eine Fehlermeldung, da s leer ist, als keine Zeichen entgällt.

Wenn du also auf diese Art ein Zeichen übergeben willst, dann prüf vorher ob der String mindestens ein Zeichen enthält:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  s: String;
  c: Char;
begin
  //s := 'a';
  if Length(s) > 0 then c := s[1else ShowMessage('Fehler, String enthält keine Zeichen');

_________________
Popov
oOXTCOo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows XP Prof. 3
Delphi 7
BeitragVerfasst: Mi 10.06.09 00:52 
es funktioniert!

ich musste einfach nur den string zu integer convertieren ;)

zu einfach damit ich sofort drauf komme... tzzz