Konvertere

Tags:    delphi

User
Bruger #455 @ 11.10.03 19:01
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';

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';

På forhånd tak!!

Mozez

[Redigeret d. 11/10-03 19:45:09 af Mikkel Larsen Pedersen]



3 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 7 karma
Sorter efter stemmer Sorter efter dato
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:

Fold kodeboks ind/udKode 



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:

Fold kodeboks ind/udKode 


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



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';

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';

På forhånd tak!!

Mozez

[Redigeret d. 11/10-03 19:45:09 af Mikkel Larsen Pedersen]

Jeg tror jeg kan lave det første du spørger om....

If edit1.text='ABCD' then
edit1.text:='01020304';

det sidste ved jeg ikke lige udmidbart da jeg ikke har delphi ved hånden....

er ikke sikker på det virker 100% da jeg ikke lige har delphi ved hånden
¤¤¤Vi lære kun så længe vi lever¤¤¤



jeg tror du skal lave konstanter... kan ikke finde en bedre metode...

const a: '01';
const b: '02';
const c: '03';
const d: '04';
osv...


for i := 0 to length(strengen) do
begin
case copy(strengen, 0, 1) of:
'a': result := result + a;
'b': result := result + b;
'c': result := result + c;
'd': result := result + d;
'e': result := result + e;
osv...
end;
length := length + 1;
if length = 4 then
begin
result := result + ' ';
length := 0;
end;
delete(strengen, 0, 1);
end;

tror det virker! skriv hvis det ikke gør!

Jeppe Johansen
Jeppesoftware@hotmail.com



t