Bonjour à tous,
j'ai un très gros fichier XML (550Mo) que je n'arrive pas à ouvrir avec omniXML car trop volumineux. Je voudrais l'éclater en plusieurs petits morceaux.
Le fichier a une structure de ce type:
J'ai essayé avec ma fonction habituelle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <a> <b> </b> </a> <a> <b> </b> </a> <a> <b> </b> </a> etc..
Mais hélas j'ai droit à un beau message "Out of Memory"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 x:=PChar(sPage); While Scan('<a>', '</a>', x, s) and (s<>'') do Begin s:='<a>'+s+'</a>'; .... End;
Auriez vous une fonction/Procedure pour me venir en aide ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 function Scan(const Search1, Search2: string; var Ch: PChar; var Text: string): Boolean; var i: Integer; begin Result:=False; if not Assigned(Ch) then Exit; i:=Pos(Search1, Ch)-1; if (i>=0) then begin Ch:=Ch+i+Length(Search1); i:=Pos(Search2, Ch)-1; if (i>=0) then begin Text:=Copy(Ch, 1, i); Ch:=Ch+i+LEngth(Search2); end else begin Text:=StrPas(Ch); Ch:=nil; end; Result:=True; end; end; {* func Scan *}
Ou alors m'aider à trouver pourquoi elle provoque un "Out of Memory" ?
Amicalement,
Bruno
Partager