![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как результат запроса записать в поток? [D7, mdb через ADO]
h0use © (2003-12-03 16:51:00)
Уважаемые мастера, не откажите в помощи!
Есть ADODataSet в котором выполняется запрос, как результат запроса записать в поток, так чтоб потом в другом месте этот поток опять перобразовать в данные для Дальнейшей работы, например в DataSource?
h0use (2003-12-04 14:10:00) [21]
Угу...осталось только с этим ClientDataSet разобраться...пример от Борланда до того наворочен и не комментирован, что только путает :(
Polevi (2003-12-04 12:19:00) [22]
не надо сырых данных, xml то что надо, пора уже это осознать, без обид
Johnny Smith (2003-12-04 12:03:00) [23]
2sniknik © (04.12.03 11:58) [12]
Я как раз передавал "сырые" данные.
sniknik (2003-12-04 11:58:00) [24]
Johnny Smith © (04.12.03 11:52) [11]
> Я чем-то подобным занимался :)).
а не пробовал передавать из ClientDataSet1.Data? это же вроде cds-а (?), более "компактно", xml всетаки перегружен лишней инфой.
Johnny Smith (2003-12-04 11:52:00) [25]
2Polevi © (04.12.03 11:47) [10]
не работал с инди, а что они не умеют посылать-принимать текст ?
Умеют, умеют :))).
Автор, по всей видимости просто хочет передать некий сырой буфер в сокет. Беда только в том, что его еще надо принять. Я чем-то подобным занимался :)).
Но для простоты я бы посоветовал автору все-таки воспользоваться Вашим предложением с XML-ем.
Polevi (2003-12-04 11:47:00) [26]
>h0use © (04.12.03 11:10) [8]
не работал с инди, а что они не умеют посылать-принимать текст ?
sniknik (2003-12-04 11:37:00) [27]
а ты ждеш готовый код? под тебя написанный? ну, ну.
а чего тогда не возмущаешся что ClientDataset1 <> ADODataSet ?
почитай про мидас(для ADO еще и RDS), реально может помочь, и не изобретать велосипед в очередной раз.
h0use (2003-12-04 11:10:00) [28]
> Polevi © (04.12.03 11:01) [7]
> Socket.SendText(ClientDataset1.XmlData);
> ClientDataset1.XmlData:=Socket.ReceiveText;
У меня соединетние НЕ через TSocket, а черз Indy компоненты. Так что данный код однозначно работать не будет!
Polevi (2003-12-04 11:01:00) [29]
Socket.SendText(ClientDataset1.XmlData);
ClientDataset1.XmlData:=Socket.ReceiveText;
Hooch (2003-12-04 10:02:00) [30]
а adoDataSet.SaveToFile/LoadFromFile не подойдут ?
h0use (2003-12-04 09:42:00) [31]
Он меня всем устраивает, кроме одного, что мне его надо пересылать по сетке на клиента, а я работаю с сетью на Инди, они не работают с стандартными компанентами типа TClientDataSet, приходится извращаться и писать свои методы по передачи.
Семен Сорокин (2003-12-03 18:12:00) [32]
2h0use
а чем тебя твой dsADO не устривает в качестве хранилища данных?
Johnny Smith (2003-12-03 17:48:00) [33]
var
Buf:pChar;
Step:integer;
begin
Step:=0;
GetMem(Buf,dsADO.RecordSize*dsADO.RecordCount);
repeat;
for I := 0 to dsADO.Fields.Count-1 do // Iterate
begin
dsADO.Fields.Fields[I].GetData(Buf+Step,True);
Inc(Step,dsADO.Fields.Fields[I].DataSize);
end;
dsADO.Next;
until dsADO.EOF;
end;
h0use (2003-12-03 17:38:00) [34]
Извиняюсь за тупой вопрос, а как сделать чтоб буфер складывался в следующем коде:
var
Buf:Pointer
......
for I := 0 to dsADO.RecordCount do // Iterate
begin
GetMem(Buf,dsADO.Fields.Fields[I].DataSize);
dsADO.Fields.Fields[I].GetData(Buf,True);
end;
Johnny Smith (2003-12-03 17:18:00) [35]
С помощью Fields.GetData(Buffer: Pointer; NativeFormat: Boolean = True) ты можешь получить в Buffer данные в "сыром" формате. Так, последовательно пройдя по всем полям и записям, ты можешь сбросить все данные в некий буфер, после чего "загнать" его в Stream.