Ahoi,
ich versuche gerade einen Codeschnipsel zu finden der mir in EZGPIB
einen Zahlenstring (Dezimal, Zahlenwert schwankt zwischen 0 und 2,6
Milliarden) in einen String aus Hexadezimalzahlen umwandelt. Die
Problematik besteht darin dass ich zwar viele Beispiele basierend auf
der PASCAL-Programmiersprache finde, diese aber allesamt nicht direkt in
EZGPIB funktionieren. Vielleicht benutzt ja hier jemand EZGPIB und kann
mir helfen ein bestehenden Codeschnipsel anzupassen, damit dieser
funktioniert.
z.B. dieser Schnipsel gefunden auf
http://computer-programming-forum.com/29-pascal/9449404a18217f5e.htm
EZGPIB: http://www.ulrich-bangert.de/html/downloads.html
1 | program hex_conv;
|
2 |
|
3 | var
|
4 | gwar:string;
|
5 |
|
6 | function Hex(v: Longint; w: Integer): String;
|
7 | var
|
8 | s : String;
|
9 | i : Integer;
|
10 | const
|
11 | hexc : array [0 .. 15] of Char= '0123456789abcdef';
|
12 | begin
|
13 | s[0] := Chr(w);
|
14 | for i := w downto 1 do begin
|
15 | s[i] := hexc[v and $F];
|
16 | v := v shr 4
|
17 | end;
|
18 | Hex := s;
|
19 | end;
|
20 |
|
21 | begin
|
22 | gwar:=hex(77,4);
|
23 | writeln(gwar);
|
24 | gwar:=hex(4096,4);
|
25 | writeln(gwar);
|
26 | end.
|
Der EZGPIB-Compiler zeigt dann an dass er die Konstante hexc nicht
akzeptiert. Wenn ich hexc nun statt als const als var verwende und nach
begin mit den Arraywerten vollschreibe, meckert der Compiler an der
Stelle Hex := s; "invalid number of parameters". Ich sehe dort das
Problem aber nicht, da ich mich nicht besonders auskenne in
Programmiersprachen. Hier die von mir eben beschreiben geänderte
Version:
1 | program hex_conv;
|
2 |
|
3 | var
|
4 | gwar:string;
|
5 |
|
6 | function Hex(v: Longint; w: Integer): String;
|
7 | var
|
8 | s : String;
|
9 | i : Integer;
|
10 | hexc : array [0 .. 15] of Char;
|
11 | begin
|
12 | hexc[0] := '0';
|
13 | hexc[1] := '1';
|
14 | hexc[2] := '2';
|
15 | hexc[3] := '3';
|
16 | hexc[4] := '4';
|
17 | hexc[5] := '5';
|
18 | hexc[6] := '6';
|
19 | hexc[7] := '7';
|
20 | hexc[8] := '8';
|
21 | hexc[9] := '9';
|
22 | hexc[10] := 'A';
|
23 | hexc[11] := 'B';
|
24 | hexc[12] := 'C';
|
25 | hexc[13] := 'D';
|
26 | hexc[14] := 'E';
|
27 | hexc[15] := 'F';
|
28 | s[0] := Chr(w);
|
29 | for i := w downto 1 do begin
|
30 | s[i] := hexc[v and $F];
|
31 | v := v shr 4
|
32 | end;
|
33 | Hex := s;
|
34 | end;
|
35 |
|
36 | begin
|
37 | gwar:=hex(77,4);
|
38 | writeln(gwar);
|
39 | gwar:=hex(4096,4);
|
40 | writeln(gwar);
|
41 | end.
|
Danke