Merhaba arkadaşlar,
Aşağıdaki kodla edit1'e yazdığım stringi belirli işlemlerden sonra edit2'de hex olarak gösteriyorum.Yapmak istediğim edit2'deki bu stringe aşağıdaki kodda uyguladığım işlemlerin tersini başka bir prosedür yazarak o prosedürde yaptırmak ve daha sonra ise o prosedürü Edit1.change olayında çağırıp kullanarak başka bir editte sonucu ASCII karakter olarak göstermek(Yani hex veya integer olarak değil).Aşağıdaki kodda işlemlerden sonra edit2'de CD89NNHK gibi bir hex string olduğunu farzedelim.Bu stringten C'den başlamak şartıyla sırayla karakterleri alıp aşağıdaki koddaki işlemleri ters sırada yaptırmam gerekiyor.Bu işlemlerin sonucunda 8 karakterlik hex olmayan bir string oluşması gerekiyor.Yalnız karakterleri tek tek alırken örneğin D harfi 2.sırada fakat ben bunu önünde ve arkasında 0'lar olarak almam gerek.Yani 0D000000 olarak.Dünden bu yana uğraşıyorum fakat her defasında yazdığım kodlar işe yaramıyor.Yardımcı olursanız çok sevineceğim arkadaşlar.Şimdiden teşekkürler.
procedure TForm1.Edit1Change(Sender: TObject);
var
b:string;
s,a,c,d:integer;
begin
s:=0;
d:=0;
for a:=1 to length(edit1.Text) do
begin
s:=s+ord(edit1.Text[a]);
s:=s-$57;
s:=s and $0F;
c:=$20-a*4;
s:=s shl c;
d:=d+s;
end;
b:= inttohex(d,8);
edit2.Text:=b;
end;
İlgilendiğiniz için sağolun rşimşek hocam.Edit2'den okunan karakterler hex olacak fakat dediğim gibi önünde ve arkasında 0'lar olacak.Yani örneğin edit2'de CCFBDD12 hex karakterlerinin olduğunu düşünün.Burada F karakteri alınırken 00F00000 şeklinde alınacak.Yazmak istediğim prosedürün sonucunda A,B,C....Z,a,..z 1,2.. $,% gibi karakterlerin olmasını istiyorum.Kolay gelsin.
Çok özür dilerim arkadaşlar ilk yazdığım mesajda hex stringi hatalı yazmışım.Hex stringin örneğin DDACB12F olduğunu düşünürsek,prosedürü nasıl yazabiliriz?
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i:integer;
DEGER:ARRAY [1..8] OF STRING[8];
begin
s:='ACBDEJ43';
FOR I:=1 TO 8 DO
BEGIN
DEGER[I]:=COPY('000000000000',1,I-1)+S[I]+COPY('000000000000',I,8-I);
SHOWMESSAGE (DEGER[I]);
END;
end;
procedure TForm1.btn_IntToHexClick(Sender: TObject);
var
IntStr: String;
begin
IntStr := InputBox('IntToHex', 'Onluk basamağa göre sayı girin', '1234');
if IntStr <> '' then
ShowMessage('Hex karşılığı = $' + IntToHex(StrToInt(IntStr),4));
end;
procedure TForm1.btn_HexToIntClick(Sender: TObject);
var
IntStr: String;
begin
IntStr := InputBox('HexToInt', 'Onaltılık (Hex) sayıyı girin', '$04D2');
if IntStr <> '' then
begin
if IntStr[1] <> '$' then
IntStr := '$' + IntStr;
ShowMessage('Onluk tabana göre karşılığı = ' + IntToStr(StrToInt(IntStr)));
end;
end;