Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Программа и байты


Автор: SoWa 1.2.2005, 15:02
Скажите пожалуйста, может ли работающая программа разобрать саму себя по байтам и сохранить их, например в текстовый документ? Если возможно, то подскажите код smile

Автор: Snowy 1.2.2005, 16:16
Открывай файл программы на чтение и читай... А потом байтики превращай в текст.
Читай через TFileStream.

Автор: Bes 1.2.2005, 16:24
Ага, у меня так получилось.

procedure TForm1.Button1Click(Sender: TObject);
Var
F1,T1:TFileStream;
begin
F1:=TFileStream.Create(Application.ExeName,fmShareDenyNone);
T1:=TFileStream.Create('C:\mySelf.txt',fmCreate);

T1.CopyFrom(F1,F1.Size);

F1.Free;
T1.Free;
end;

Автор: Snowy 1.2.2005, 16:48
Код

procedure FileToHex(fn:string);
const
 hex: string='0123456789ABCDEF';
var
 f: TFileStream;
 m: array[0..15] of byte;
 l: string;
 i,n: integer;
begin
 Form1.Memo1.Clear;
 if not FileExists(fn) then exit;
 f:=TFileStream.Create(fn,fmShareDenyWrite);
 repeat
   n:=f.Read(m,16);
   l:=''; if n>0 then begin
     for i:=0 to n-1 do begin
       l:=l+copy(hex,m[i] div 16 +1,1)+
          copy(hex,m[i] mod 16 +1,1)+' ';
     end;
     Form1.Memo1.Lines.Add(l);
   end;
 until (n = 0);
 f.Free;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 FileToHex(ParamStr(0));
end;

Автор: SoWa 3.2.2005, 12:14
Круто! Очень благодарен!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)