
07.02.2010, 22:31
|
Прохожий
|
|
Регистрация: 03.12.2009
Сообщения: 19
Репутация: 10
|
|
запись из потока в массив
Подскажите пожалуйста, при чтении из потока в файл выходит ошибка is not a valid integer value.
При записи массива в поток все работает корректно.
Код:
unit TEST1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ToolWin, ComCtrls, ActnMan, ActnCtrls, Grids;
const
MaxElements = 10;
type
TForm1 = class(TForm)
SaveButton1: TButton;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
LoadButton1: TButton;
procedure SaveButton1Click(Sender: TObject);
procedure LoadButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.SaveButton1Click(Sender: TObject);
var
i: integer;
n: array[1..MaxElements] of integer;
p1: TStream;
S: string;
begin
for i := 1 to MaxElements do
n[i]:= (i)*(-2);
for i := 1 to MaxElements do
StringGrid1.Cells[1, i]:= intTostr(n[i]);
begin
p1 := TFileStream.Create('D:\тест\file34.txt', fmCreate);
try
for i := 1 to MaxElements do
begin
S := IntToStr(n[i]) + #13#10;
p1.Write(PChar(S)^, Length(S));
end;
finally
end;
p1.Free;
end;
end;
procedure TForm1.LoadButton1Click(Sender: TObject);
var
i:integer;
k: array[1..MaxElements] of integer;
p2:TStream;
f:array[1..10] of string;
begin
p2:= TFileStream.Create('D:\тест\file34.txt', fmopenread);
try
for i := 1 to MaxElements do begin
p2.Read(PChar(f[i])^, Length(f));
// p2.Read(k[1], MaxElements*(SizeOf(integer)));
// for i := 1 to MaxElements do begin
k[i]:=strtoint(f[i]);
StringGrid2.Cells[1, i] := IntToStr(f[i]);
end;
finally
end;
p2.Free;
end;
end.
|