Dosyayı Hex formatında Göster

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
delphiibo
Üye
Mesajlar: 72
Kayıt: 27 Eki 2005 04:55
Konum: istanbul
İletişim:

Dosyayı Hex formatında Göster

Mesaj gönderen delphiibo »

İyi çalışmalar arkadaşlar. Dosyaları HEx formatında mesela Richeditte nasıl gösterebiliriz.

Kod: Tümünü seç

function TForm1.TekBHex(Sayi: Byte): String;
var
  sonuc:String;
begin
  if sayi<10 then sonuc:=inttostr(sayi);
  if sayi>9  then
  begin
    case sayi of
      10: sonuc:='A';
      11: sonuc:='B';
      12: sonuc:='C';
      13: sonuc:='D';
      14: sonuc:='E';
      15: sonuc:='F';
    end;//case
  end;
  Result:=sonuc;
end;

function TForm1.ByteToHex(Bayt: Byte): String;
var
  sonuc:string;
begin
  sonuc:=TekBHex(Bayt Div 16);
  sonuc:=sonuc+TekBHex(Bayt Mod 16);
  result:=sonuc;
end;
Bir arkadaş yukardaki kodları verdi ama. Binaryread olayı varmış. Pek anlamadım. Yardım edenlere teşekkürler.[/code]
Onun tek dostu Allah
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

Ekstra bir fonksiyona gerek yok! Delphi'nin kendi sınıf ve fonksiyonları ile yapabilirsin. İlk önce stream ile dosyayı okutmalı ardından BinToHex ile istediğin hex değerlerini almalısın. Aşağıda hızlıca karaladığım bir şeyler var. Ama denemedim. Hata verebilir. Ama mantık aşağıdaki anlattığım gibi.

Kod: Tümünü seç

var
  fs: TFileStream;
  temp: Char;
  buffer: string;
  pBuffer: PAnsiChar;
  text: PAnsiChar;
begin
  fs := TFileStream.Create('dosyanın yolu', fmOpenRead or fmShareDenyNone);
  fs.Position := 0;
  while fs.Position < fs.Size do
  begin
    fs.Read(temp, 1); //buffer içine her defasında 1 byte gelir.
    buffer := buffer + temp;
  end;
  pBuffer := PAnsiChar(buffer);
  BinToHex(pBuffer, text, Length(buffer));
  Memo1.Text := text;
end;
kolay gele
vesselam.
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

sonradan farkettim. while döngüsünün olduğu yerde kodların daha hızlı çalışması için Read fonksiyonu ile 1 byte yerine daha fazla veri çekilebilir. Bu kısmını da sana bırakıyorum. :wink:
Cevapla