Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];

Вниз

чем можно заменить TXMLDocument?   Найти похожие ветки 

 
Dysan ©   (2006-08-03 15:35) [0]

обнаружил что происходят утечки памяти при использовании XML интерфейсов, т.к. создаю обьекты типа TXMLDocument
не в дезигн-тайме, то использую его интерфейс IXMLDocument.
не посоветуете чем заменить дельфёфский XML парсер ?


 
Kolan ©   (2006-08-03 15:39) [1]

С XML я не работал, но сильно сомневаюсь что дело в нем... На пустом проекте проверял? И код дай как создаешь - удаляешь...


 
Dysan ©   (2006-08-03 15:47) [2]


var
xml:IXMLDocument;
begin
xml:=TXMLDocument.Create(nil); - создал
xml:=nil; - удалил

а решил я так потому что прикрутил альтернативный манагер памяти и он при запуске программы выдает такую мессагу
http://magistral-rw.ru/pub/pic1.jpg


 
Kolan ©   (2006-08-03 15:52) [3]

И это
> http://magistral-rw.ru/pub/pic1.jpg

в новом проекте?

Хотел попробовать, но Undeclared identifier: "IXMLDocument" XMLDoc подключил, что еще надо?


 
Плохиш ©   (2006-08-03 15:53) [4]


> Dysan ©   (03.08.06 15:47) [2]
>
> var
> xml:IXMLDocument;
> begin
> xml:=TXMLDocument.Create(nil); - создал
> xml:=nil; - удалил

Да, что ты такое говоришь, обнилил ссылку, а объект остался. Объекты удаляются в делфи вызовом деструктора.


 
Dysan ©   (2006-08-03 16:32) [5]

а нету у IXMLDocument метода Free или Destroy !
как удалить по другому я не знаю, но кажеться когда то давнол спрашивал мне именно так и сказали его удалять!


 
Dysan ©   (2006-08-03 16:33) [6]

нужно еще подключить XMLIntf


 
alles ©   (2006-08-03 17:29) [7]

Можно по другому сделать. Пример ф-ий из рабочего проекта
Function  LoadXMLFromFile(FileName:ShortString):Variant;
begin
if FileExists(FileName) then
      begin
        Result := CreateOleObject("Microsoft.XMLDOM");
        Result.load(FileName);
        if Result.parseError.reason <> "" then
           begin
                 ShowMessage("Error load XML:""admInf.~xml"".Error: "+Result.parseError.reason);
                 exit;
           end;
      end;    
end;

можно тут прочитать про это
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/b9f053cf-84cf-4a1c-9d7e-b3aabf9830a2.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/4ead2a13-de31-487e-b826-53f132f25cbb.asp


 
alles ©   (2006-08-03 17:31) [8]

тут показывают как бегать по XML -у
http://www.codenet.ru/progr/delphi/stat/delphi_xml.php


 
palva ©   (2006-08-03 17:52) [9]

Плохиш ©   (03.08.06 15:53) [4]
Объект с интерфейсами удаляется сам, когда обнуляется счетчик ссылок на интерфейс. См. реализацию метода _Release в объекте TInterfacedObject - там есть обращение к Destroy. Можно запустить такую программу и посмотреть, как это работает:

{$APPTYPE CONSOLE}
type
 IC = interface
   procedure P1;
 end;

 CC = class(TInterfacedObject, IC)
   procedure P1;
   destructor Destroy; override;
 end;

 procedure CC.P1;
 begin
   WriteLn("CC.P1")
 end;

 destructor CC.Destroy;
 begin
   Writeln("Destroying");
   Inherited Destroy;
 end;

var
 ic1: IC;
 cc1: CC;  
begin
 cc1 := CC.Create;
 ic1 := cc1;
 ic1.P1; // печатает CC.P1
 ic1 := Nil; // печатает Destroying
 cc1.Free; // Exception увы
end.


 
Плохиш ©   (2006-08-03 19:16) [10]


> palva ©   (03.08.06 17:52) [9]

Да, в справке по TXMLDocument об этом написано, но у человека, по его словам, память не освобождается, значит где-то он вводит нас в заблуждение.


 
palva ©   (2006-08-03 20:32) [11]

Возможно где-то осталась необнуленная ссылка... Если Destroy срабатывает без исключения, то, наверно, таким образом и можно побороться с утечкой памяти, хотя лучше найти ошибку.



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

Форум: "Начинающим";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.038 c
11-1132130105
-=Mike=-
2005-11-16 11:35
2006.08.27
Как в TKOLListView установить фокус на определенный элемент


11-1131652752
Flea
2005-11-10 22:59
2006.08.27
MHFindReplaceDialog


3-1150885250
MsGuns
2006-06-21 14:20
2006.08.27
Максимальная скорость загрузки данных в таблицу


15-1154090866
Der Nechk@ssoff
2006-07-28 16:47
2006.08.27
С праздником!


1-1153124134
wezzz
2006-07-17 12:15
2006.08.27
Как в excel записать данные в столбец Х (по порядковому номеру!)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский