11. januar 2012 - 15:10Der er
5 kommentarer og 1 løsning
XML og INI FILER...
HEJ,
Jeg har nu i 3 dage forgæves søgt at få min XML fil til at opføre sig som en INI-fil (og initialise mine variable ved start, skrive tilbage ved pgm-lukning - osv), men enten er XML-filen "meget lidt lydhør for mine bønner" eller også gør jeg det forkert (sikkert det mest rigtige), så jeg har brug for en af experternes råd (kode ?) så jeg kan det til at køre.
Eksperimenter med at åbne XML-filer går tilsyneladende udmærket, men at skrive indholdet til komponenten går galt.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Når jeg skrev <komp>Label1</komp> mente jeg som KOMPONENT.
Det er muligt at når jeg får det til at virke (og her er jeg rimelig blank - da jeg har arbejdet med det i snart 3 hele dage og det funker stadig ikke ..) skal ændre dette til <komp>Label1.caption</komp> , eller til key eller måske noget helt andet. Jeg ved det ikke (endnu).
Bruger jeg almindelige INI filer funker det, men jeg vil have det over på XML-niveau.
Har efter en del bøvlen og manipulering fundet en løsning, som virker (men er utilfreds med den - er ikke smart nok (the delphi Way)), så jeg lader spm. stå åben en uge endnu og hvis der ikke kommer input lukker jeg.
Dette er ikke direkte men er trods alt ikke meget kode:
procedure TForm1.Button1Click(Sender: TObject);
var doc : TXMLDocument; nodelist : TDOMNodelist; i : integer; comp : TComponent;
begin ReadXMLFile(doc, 'C:\work\da.xml'); nodelist := doc.GetElementsByTagName('komp'); for i := 0 to nodelist.Count-1 do begin comp := FindComponent(nodelist[i].TextContent); if comp is TLabel then begin TLabel(comp).Caption := nodelist[i].ParentNode.FindNode('value').TextContent; end; end; doc.Free; end;
Det var netop noget i stil med det du foreslår som jeg var kommet frem til. Det kører men er noget tungt. Din løsning (med de lokale modifikationer, som er nødvendige) er meget bedre end min (sparer ca. 25 liniers kode, og kører hurtigere så hvis du dropper et svar er du 30 point rigere.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.