Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как результат запроса записать в поток? [D7, mdb через ADO]


Страницы:   1 2

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.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо