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


Автор: COOLHack 26.3.2009, 20:35
Имеется переменная, a:='asd'. 
Подскажите как эту переменную записать в бинарный файл побайтно, при этом прибавляя к каждому байту определённо число? (например 4).

Автор: SlaUr 27.3.2009, 09:18
Код

var F1:Text;St1:string;i1:integer;b1:integer;

begin
St1:='wew';
AssignFile(F1,'C:\1.bin');
Rewrite(F1);
For i1:=1 to Length(St1) do
begin
  B1:=Ord(St1[i1]);
  B1:=B1+4;
  if B1>255 then B1:=b1-255;
  Write(F1,Chr(b1));
end;
CloseFile(F1);
end;


Автор: THandle 27.3.2009, 10:23
Или как-то так.

Код

//магическое число
const
  M_C = 4;

//запись
procedure TForm2.Button1Click(Sender: TObject);
var
  a: String;
  I: Integer;
  Len: Integer;
  W: Byte;
begin
  a := 'asd';
  with TFileStream.Create('E:\PSBFT', fmCreate) do
  try
    Len := Length(a);
    Write(Len, SizeOf(Integer));
    for I := 1 to Len do
    begin
      W := Ord(a[I]);
      Inc(W, M_C);
      Write(W, SizeOf(Byte));
    end;
  finally
    Free;
  end;
end;

//чтение
procedure TForm2.Button2Click(Sender: TObject);
var
  a: String;
  I: Integer;
  Len: Integer;
  W: Byte;
begin
  with TFileStream.Create('E:\PSBFT', fmOpenRead) do
  try
    Read(Len, SizeOf(Integer));
    SetLength(a, Len);
    for I := 1 to Len do
    begin
      Read(W, SizeOf(Byte));
      Dec(W, M_C);
      a[I] := Chr(W);
    end;
  finally
    Free;
  end;
  ShowMessage(a);
end;


ЗЫ: написано в блокноте, Delphi не стоит. Но работать должно)

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