Форум: "Начинающим";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
ВнизTMemoryStream TidTCPClient..server Найти похожие ветки
← →
Fl@sh © (2006-03-29 19:00) [0]На сервере обработчик:
procedure TForm1.ITCPSTIdCommandLoadFromDBKlientCommand(
ASender: TIdCommand);
var
DataModule: TDataModule1;
i: integer;
SL: TStringList;
ipRR: string;
ms: TMemoryStream;
begin
DataModule := TDataModule1.Create(nil);
try
ipRR := ASender.Params[0];
with DataModule.IBQuery do
begin
Close;
SQL.Clear;
SQL.Text := "SELECT * FROM KLIENT WHERE "RR"=" + ipRR;
Open;
end;
SL := TStringList.Create;
ms := TMemoryStream.Create;
try
try
for i := 0 to DataModule.IBQuery.FieldCount - 1 do
SL.Add(DataModule.IBQuery.Fields[i].AsString);
SL.Add("asdf");
SL.SaveToStream(ms);
ASender.Thread.Connection.WriteStream(ms, True, False);
except
on E: Exception do
Writeln("Error:" + e.Message);
end;
finally
SL.Free;
ms.Free;
end;
finally
DataModule.Free;
end;
end;
На клиенте:procedure TfmServer.Button5Click(Sender: TObject);
var
i : Integer;
ms: TMemoryStream;
SL: TStringList;
begin
fmServer.IdTCPClient.Connect;
fmServer.IdTCPClient.SendCmd("select 2345");
ms := TMemoryStream.Create;
try
// ms.Position := 0;
fmServer.IdTCPClient.ReadStream(ms);
SL.LoadFromStream(ms);
//Memo1.Lines.LoadFromStream(ms);
finally
SL.Free;
ms.Free;
end;
end;
Вискакивает error на строчке SL.LoadFromStream(ms);
..excepion with message "Out of memory while expanding memory stream". Use step..
Как лечить?
← →
antonn © (2006-03-29 19:48) [1]комментарий убрать
fmServer.IdTCPClient.ReadStream(ms);
ms.Position := 0;
SL.LoadFromStream(ms);
← →
Fl@sh © (2006-03-29 20:02) [2]Вот так:
procedure TfmServer.Button5Click(Sender: TObject);
var
i : Integer;
ms: TMemoryStream;
SL: TStringList;
begin
fmServer.IdTCPClient.Connect;
fmServer.IdTCPClient.SendCmd("select 2345");
ms := TMemoryStream.Create;
try
fmServer.IdTCPClient.ReadStream(ms); //Ошибка та же что и в [0]
ms.Position := 0;
SL.LoadFromStream(ms);
finally
SL.Free;
ms.Free;
end;
end;
Не помогло :)
← →
antonn_ (2006-03-29 20:24) [3]кстати, SL создается?
по проблеме - не знаю, я с ТЦП не работал...
← →
Fl@sh © (2006-03-29 20:44) [4]
> кстати, SL создается?
Уже да, я забыл про него, хотя суть не в этом, я еще даже к SL не обращался.
← →
tesseract © (2006-03-29 21:50) [5]Пример из help по TCPClient по indy 9
if bSizeKnown then
// read known data size
AConnection.ReadStream(AStream, ABytes, False)
else
// read all data until disconnected
AConnection.ReadStream(AStream, -1, True);
← →
Fl@sh © (2006-03-29 22:37) [6]
> tesseract © (29.03.06 21:50) [5]
Спасибо большое за пример
Кому интересно, вот как надо:
...
try
fmServer.IdTCPClient.ReadStream(ms, ms.Size, False);
ms.Position := 0;
SL.LoadFromStream(ms);
finally
...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c