Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Парсер XML   Найти похожие ветки 

 
ANB ©   (2005-03-01 10:16) [0]

Кто нибудь знает приличный компонент, который умеет DataSet преобразовывать в XML и обратно ?


 
Sancho ©   (2005-03-01 10:27) [1]

А чем TClientDataSet не подходит ?


 
Sergeich   (2005-03-01 11:24) [2]

uses MSXML,MSXMLDOM
руками пишется за 15 мин


 
Чапаев ©   (2005-03-01 11:41) [3]

Руками-то руками... Но ведь есть готовый TClientDataSet, зачем велосипед изобретать?

А если хочется изобретать, то я бы ещё посоветовал в сторону XML mapper посмотреть.


 
ANB ©   (2005-03-02 09:36) [4]

Так, так, поподробнее. Я работаю с Oracle через ODAC. Чего то не сильно у меня получилось туда TClientDataSet подрубить, а плодить коннекты и сессии как то не очень. И изобретать не хочется, так как проще тогда CSV, ибо мне XML только для сохранения результата запроса в строку или в BLOB нужен.


 
Erik1 ©   (2005-03-02 11:44) [5]

procedure CopyDef(const Source: TDataSet; const Dest: TClientDataSet);
var
 i: Integer;
 MyBuffer: PChar;
begin
 Dest.Close;
 Dest.ReadOnly := False;
 Source.Active := True;
 Dest.FieldDefs.Clear;
 for i := 0 to Source.Fields.Count - 1 do
   with Source.Fields[i] do
     Dest.FieldDefs.Add(FullName, DataType, Size, False);

 Source.First;
 Dest.CreateDataSet;
 while not Source.Eof do
 begin
   Dest.Append;
   for i := 0 to Source.Fields.Count - 1 do
   begin
     GetMem(MyBuffer, Source.Fields[i].DataSize);
     try
       if Source.Fields[i].GetData(MyBuffer) then
         Dest.Fields[i].SetData(MyBuffer);
     finally
       FreeMem(MyBuffer, Source.Fields[i].DataSize);
     end;
     Dest.Fields[i].Value := Source.Fields[i].Value;
   end;
   Dest.Post;
   Source.Next;
 end;
 Dest.ReadOnly := True;
end;


 
ANB ©   (2005-03-02 16:46) [6]


> Erik1 ©   (02.03.05 11:44) [5]

Круто. Только поясни, плз, для общего развития, для чего

if Source.Fields[i].GetData(MyBuffer) then
        Dest.Fields[i].SetData(MyBuffer);


если ниже ты присваиваешь

Dest.Fields[i].Value := Source.Fields[i].Value;

Что будет, если GetData/SetData не делать, и что они делают ?
Я просто никогда с этими методами не работал.


 
Erik1 ©   (2005-03-04 15:44) [7]

От отладки осталась.



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.069 c
1-1109694990
PZ
2005-03-01 19:36
2005.03.20
Управление обозревателем


1-1109765001
Lakshmy
2005-03-02 15:03
2005.03.20
Незапланированные точки останова


14-1109497114
dr Tr0jan
2005-02-27 12:38
2005.03.20
Как настроить вывод в консоль, глюк с русской кодировкой


1-1109855734
HanIP
2005-03-03 16:15
2005.03.20
Получение времени с сервера.


6-1104355091
XProger
2004-12-30 00:18
2005.03.20
WinSock и прокси