Jeg har en tekst i en TEdit f.eks:
Edit1.Text := 'ABCD';
Jeg vil gerne have en metode for hvordan man konverterer denne tekst med den forudsætning at A=01, B=02, C=03 osv.
Altså det vil sige:
Edit1.Text := '01020304';
Du tager udgangspunkt i ascii tabellen. Hvis du skal kunne bruge både store og små bogstaver bliver det en anelse mere kompliceret, men her vil jeg tage udgangspunkt i at din tekst ikke er case sensitiv.
A = Ascii værdi 65. Dvs. at Ord(A) - 64 = 1, Ord(B) - 64 = 2, osv.
Helt specifikt kan du opbygge din "tal-streng" på følgende måde:
var
idx : integer;
str : String;
txt : String;
begin
str := '';
txt := UpperCase(edit1.text);
for idx := 1 to length(txt) do
str := str + Format('%.2d', [Ord(txt[idx]) - 64]);
Derefter vil jeg gerne have at vide hvordan man sætter et mellemrum ind efter hvert 4. ciffer.
Altså det vil sige:
Edit1.Text := '0102 0304';
Vi fortsætter med følgende:
idx := 5;
while idx < length(str) do
begin
insert(' ', str, idx);
inc(idx, 5);
end;
label1.Caption := str;
end;
Bemærk at idx starter med værdien 5. Det skyldes jo at en streng har start position 1. Dvs. at positionen efter de fire første karaktere har indeks 5. Desuden forøger vi jo så også strengens længde med 1 hver gang, så derfor forøger vi jo så idx med 5 også.
---
Thomas Due
Software developer
udvikleren.dk - ASP redaktør
tdue@mail.dk