-=eXclass=-
|
Дата: Пятница, 06.03.2015, 20:42 | Сообщение # 1
|
Новичок
Зарегистрирован: 06.03.2015
Группа: Пользователи
Сообщений: 1
Статус: Offline
|
Помогите изменить код, под winapi, без использования Stream и TStringStream, но выполнять код так же
Код
var
c: array [1..6] of Byte = (11,1,00,01,110,101)
...
procedure TForm1.Button1Click(Sender: TObject);
var
f:TFileStream;
s:TStringStream;
i,j:integer;
begin
f:=TFileStream.Create('text.txt',fmOpenReadWrite);
s:=TStringStream.Create;
s.CopyFrom(f,f.Size);
for i:=0 to s.Size do
begin
j:=Random(6);
s.Bytes[i]:=c[j];
end;
f.Position:=0;;
f.Write(s.Bytes,s.Size);
f.Free;
s.Free;
end;
|
|
|
|
ramzeswr
|
Дата: Суббота, 07.03.2015, 08:48 | Сообщение # 2
|
Участник
Зарегистрирован: 17.04.2013
Группа: Пользователи
Сообщений: 61
Статус: Offline
|
Оно?
Код
var
c: array [1..6] of Byte = (11,1,00,01,110,101);
function GetFile(path: string): string;
var
Len, CntRead : Longword;
hF : THandle;
s: string;
begin
result:='';
s:='';
hF := CreateFile(PChar(path), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
if hF = INVALID_HANDLE_VALUE then
Exit;
Len := GetFileSize(hF, @Len);
SetLength(S, Len);
try
ReadFile(hF, Pointer(S)^, Len, CntRead, nil);
finally
CloseHandle(hF);
end;
result:=s;
end;
procedure WriteToFile(path, data: string);
var
hFile :THandle;
ByteWritten : cardinal;
begin
hFile:= CreateFile(PChar(path) ,GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE,nil,CREATE_ALWAYS,0,0);
WriteFile(hFile, data[1], Length(data),ByteWritten, nil);
CloseHandle(hFile);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
i, r:integer;
begin
s := GetFile('text.txt');
for i:=1 to length(s) do
begin
randomize;
r := Random(6);
s[i]:= Char(c[r]);
end;
WriteToFile('text.txt', s);
end;
|
|
|
|