Odrzucenie niechcianych znaków ze stringa.

0

Witam.
Pobieram z pliku XML dane do zapisu w bazie sqlite i muszę usunąć lub zamienić wszystkie znaki " występujące w stringu. Problem w tym, że przy dużej ilości danych funkcja StringReplace się wykłada i zapis do bazy jest niemożliwy, gdyż otrzymuję syntax error.

Dane z pliku XML pobierane są w pętli for a odrzucam niechciane znaki w taki sposób:

desc := StringReplace(Data.DocumentElement.ChildNodes[i].ChildNodes[2].Text, '"', '`', [rfReplaceAll]);

zmienna desc jest typu WideString

co może być powodem działania funkcji jak jej się zachce tzn. dla większości danych działa poprawnie, a często się wykłada?

1

Stawiam na istnienie wewnątrz ciągu kombinacji \".

0

Po dołożeniu kolejnej funkcji StringReplace program nadal się wykłada.

desc := StringReplace(desc, '\"', '`', [rfReplaceAll]);
1

No tak nie możesz, przypuśćmy, że masz ciąg:
"Alphaville - \"Forever young\"" - Twoja funkcja zamieni go na bzdury :P

0

Rozwiązanie było banalne. Problem nie leżał po stronie funkcji a po stronie pobierania danych. Położenie interesujących mnie danych zmieniało się i pobieranie danych w sposób

(...).ChildNodes[2].Text;

nie było prawidłowe. Wystarczyło wpisać nazwę dziecka i problem już się nie powtórzył.

Dziękuję za pomoc. Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1