Witam,

Piszę z problemem conajmniej dziwnym. Rozwijam (Delphi 7) aplikację, która używa bardzo dużo XMLa - za pośrednictwem MSXML 4.0. Aplikacja jest użytkowana pod Windows, na różnych konfiguracjach systemowo/sprzętowych. Pojawił się problem - aplikacja nagle zaczęła wykrywać błędy parsowania dokumentów XML. Po obejrzeniu takich 'nadgryzionych' plików okazało się, że w treści dokumentów są po prostu pozmieniane niektóre znaki - co ciekawe, tylko w znacznikach, nie w danych (chyba, że coś przeoczyłem). A to jakiś inny znak zamiast < w znaczniku, a to litera zmieniona z małej na wielką - tego typu dziwactwa, co najśmiejszniejsze - zwykle dotyczą dwóch pierwszych znaków znacznika zamykającego. Przekłamania pojawiają się praktycznie w losowych miejscach plików, bez związku z danymi które były akurat w nich modyfikowane czy dodawane. Problem pojawił się w plikach o wielkości ponad 500kb. Ponieważ pliki są szyfrowane, zawartość drzewa XML w formie tekstowej (obiekt xDoc klasy IXMLDOMDocument, jego pole: xDoc.xml) jest przekazywana funkcji szyfrującej, i dalej zapisywana do plików. Ponieważ problem pojawił się i bez szyfrowania plików, i z szyfrowaniem - coś musi się dziać nie tak jeszcze w samym obiekcie dokumentu XML, przed/po pobraniu jego zawartości. Obiekt ma wyłączony dostęp asynchroniczny. Dostałem w swoje ręce komputer z takim problemem, niestety nie jestem w stanie zreprodukować błędu; stoi na nim Windows 98 na sprzęcie nietypowym dla win98, raczej przeznaczonym pod XP - Duron 1.3GHz. Treść dokumentu jest przed zapisaniem i szyfrowaniem ładowana do listy TStrings, jednak raczej nie tam dzieją się problemy, ponieważ tak jak stwierdziłem przekłamania są w znacznikach, nie w danych.

Szczerze mówiąc, trochę zgłupiałem widząc takie cuda ;) na razie testowo wrzuciłem sztuczne opóźnienie (sleep, 50ms) między momentem jakichkolwiek zmian w drzewie XML a pobraniem z niego danych przez pole .xml. może ktoś z Was będzie w stanie podrzucić mi jakąkolwiek sugestię?