procedure TForm2.Button1Click(Sender: TObject);
var s: string;
begin
if CheckBox1.Checked then
begin
AssignFile(F,'user.cfg');
Rewrite(F);
s:=Edit1.Text;
BlockWrite(F,s,1);
s:=Edit2.Text;
BlockWrite(F,s,1);
s:=Edit3.Text;
BlockWrite(F,s,1);
CloseFile(F);
end;
end;
Чтение нетипизированного файла. Help!
Создание файла:
Код:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
AssignFile(F,'user.cfg');
Reset(F);
BlockRead(F,host,1);
CloseFile(F);
end;
begin
AssignFile(F,'user.cfg');
Reset(F);
BlockRead(F,host,1);
CloseFile(F);
end;
если ты все равно помещаешь в файл строки, то почему бы не работать как с текстовым файлом?
В дальнейшем планируется сохранять и другие данные, которые к тому же не должны быть распознаны пользователем. Проще говоря, чтобы он, открыв user.cfg, не увидел там нормальных символов.
Тогда тебе необходимо делать заголовок файла из которого можно было бы получать информацию о его структуре (с какого места начинаются данные какой размер и т.д.) или предполагать что файл имеет четко определенную структуру.
со строками лучше так...
Код:
var
SL: TStrings;
begin
SL := TStringList.Create;
try
SL.Add(Edit1.Text);
SL.Add(Edit2.Text);
SL.Add(Edit3.Text);
SL.SaveToFile('user.cfg');
finally
SL.Free;
end;
end;
SL: TStrings;
begin
SL := TStringList.Create;
try
SL.Add(Edit1.Text);
SL.Add(Edit2.Text);
SL.Add(Edit3.Text);
SL.SaveToFile('user.cfg');
finally
SL.Free;
end;
end;
тогда каждый параметр получается в отдельной строке....
если хочешь, чтоб юзер не прочитал, что написано - шифрани перед сохранением и вся любовь...
с нетипизированными файлами лучше работать как с потоками...
Код:
//запись
var
Stream: TMemoryStream;
S: String;
Size: Integer;
begin
Stream := TMemoryStream.Create;
try
S := 'ля-ля-ля';
Size := Length(S);
Stream.WriteBuffer(Size, SizeOf(Size));
Stream.WriteBuffer(S[1], Size);
Stream.SaveToFile('MyFile.dat');
finally
Stream.Free;
end;
end;
//чтение
var
Stream: TMemoryStream;
S: String;
Size: Integer;
begin
Stream := TMemoryStream.Create;
try
Stream.LoadFromFile('MyFile.dat');
Stream.Position := 0;
Stream.ReadBuffer(Size, SizeOf(Size));
SetLength(S, Size);
Stream.ReadBuffer(S[1], Size);
ShowMessage(S);
finally
Stream.Free;
end;
end;
var
Stream: TMemoryStream;
S: String;
Size: Integer;
begin
Stream := TMemoryStream.Create;
try
S := 'ля-ля-ля';
Size := Length(S);
Stream.WriteBuffer(Size, SizeOf(Size));
Stream.WriteBuffer(S[1], Size);
Stream.SaveToFile('MyFile.dat');
finally
Stream.Free;
end;
end;
//чтение
var
Stream: TMemoryStream;
S: String;
Size: Integer;
begin
Stream := TMemoryStream.Create;
try
Stream.LoadFromFile('MyFile.dat');
Stream.Position := 0;
Stream.ReadBuffer(Size, SizeOf(Size));
SetLength(S, Size);
Stream.ReadBuffer(S[1], Size);
ShowMessage(S);
finally
Stream.Free;
end;
end;
примерно так... компилятора нет, поэтому писал всё с головы..
Код:
procedure TForm2.Button1Click(Sender: TObject);
var
Stream: TMemoryStream;
S: String;
Size: Integer;
begin
if CheckBox1.Checked then
begin
Stream := TMemoryStream.Create;
try
S := Edit1.Text;
Size := Length(S);
Stream.WriteBuffer(Size, SizeOf(Size));
Stream.WriteBuffer(S[1], Size);
Stream.SaveToFile('user.cfg');
S := Edit2.Text;
Size := Length(S);
Stream.WriteBuffer(Size, SizeOf(Size));
Stream.WriteBuffer(S[1], Size);
Stream.SaveToFile('user.cfg');
S := Edit3.Text;
Size := Length(S);
Stream.WriteBuffer(Size, SizeOf(Size));
Stream.WriteBuffer(S[1], Size);
Stream.SaveToFile('user.cfg');
finally
Stream.Free;
end;
end;
end;
var
Stream: TMemoryStream;
S: String;
Size: Integer;
begin
if CheckBox1.Checked then
begin
Stream := TMemoryStream.Create;
try
S := Edit1.Text;
Size := Length(S);
Stream.WriteBuffer(Size, SizeOf(Size));
Stream.WriteBuffer(S[1], Size);
Stream.SaveToFile('user.cfg');
S := Edit2.Text;
Size := Length(S);
Stream.WriteBuffer(Size, SizeOf(Size));
Stream.WriteBuffer(S[1], Size);
Stream.SaveToFile('user.cfg');
S := Edit3.Text;
Size := Length(S);
Stream.WriteBuffer(Size, SizeOf(Size));
Stream.WriteBuffer(S[1], Size);
Stream.SaveToFile('user.cfg');
finally
Stream.Free;
end;
end;
end;
а как ты их читаешь?
А кагнадо?