Avatar billede hugopedersen Nybegynder
06. april 2009 - 07:54 Der er 7 kommentarer og
3 løsninger

Gemme og hente fra XML fil

Jeg ville gerne kunne gemme nogle data i en XML fil og ligeledes kunne hente dem igen. Der er kun tale om 1 'record'

Findes der ikke nogle gode eksempler på hvordan det kan kringles.

Grunden til jeg overvejer XML er at jeg mener det vil fremtidssikre mig lidt. I dag gemmer jeg i en flad tekstfil men da der er et andet program som skal kunne læse mine data vil jeg mene at XML må være lidt bedre da der er 'feltnavne' med og jeg derfor ikke skal bekymre mig om rækkefølgen af oplysningerne.
Avatar billede kroning Nybegynder
06. april 2009 - 09:16 #1
Hvis du benytter formen:
Navn1=Værdi1
Navn2=Værdi2
Navn3=Værdi3
osv.

kan du benytte TInifiles eller TStringList, så får du feltnavne med og rækkefølgen er ikke vigtig.

Hvis du vil benytte XML kan du bruge TClientDataSet som kan gemme i XML ved at kalde:
ClientDataSet.SaveToFile('dinfil.xml',dfXMLUTF8);

og hente data igen således:
ClientDataSet.LoadFromFile('dinfil.xml');
Avatar billede kroning Nybegynder
06. april 2009 - 09:19 #2
Mht. Navn1=Værdi1 så findes der i TStringList funktioner til at håndtere dette, f.eks. Names[], Values[], ValuesFromIndex[] osv.
Avatar billede kroning Nybegynder
06. april 2009 - 09:25 #3
Syntes lige jeg vil skrive lidt mere om TStringList da den faktisk er meget smart at benytte, hvis du f.eks. har en fil med værdierne:
Navn1=Værdi1
Navn2=Værdi2
Navn3=Værdi3

så indlæser du dem med:
StringList.LoadFromFile('Dinfil.txt');

hvis du vil have værdien for Navn2 så skriver du blot:

abc=StringList.Values['Navn2'];

Hvis du vil sætte en værdi skriver du:
StringList.Values['Navn2']:='En ny værdi';

og for at gemme:
StringList.SaveToFile('Dinfil.txt');

Hvis du har andre værdier end Text i fin fil vil en TInifile værer lidt lettere at benytte da den har funktioner til direkte at gemme/hente andre formater, men opbygninger i filen er stadig det samme format Navn1=Value1
Avatar billede fusion-it Nybegynder
06. april 2009 - 09:29 #4
Jeg har gjort noget helt andet ..... Med hjælp fra en god ven som fik den iden at overskrive filen hver gang der opdateres. Dette var fordi jeg skulle hente info fra en DB i ASP.

:)
Avatar billede hugopedersen Nybegynder
06. april 2009 - 11:13 #5
kroning>
Jeg kan godt se fidusen i det du skriver - måske er det den vej jeg skal kigge. Jeg synes bare at XML var lidt mere universal og vil kunne læses af andre programmer uden at kende til formatet. Hvis jeg 'opfinder' mit eget format er det lidt mere låst hvis du forstår hvor jeg vil hen.
Avatar billede kroning Nybegynder
06. april 2009 - 13:31 #6
Nu er formatet:
Navn1=Værdi1
Navn2=Værdi2
Navn3=Værdi3
osv.

et format der bruges af næsten alt og alle så det vil jeg ikke kalde at opfinde sig eget.
Jeg vil mene at det format vil kunne læses af betydelig flere end som et XML format.
Avatar billede js_delphi Nybegynder
12. april 2009 - 23:03 #7
uses
  XMLIntf, XMLDoc;

procedure TForm1.Button1Click(Sender: TObject);
var
  XMLDoc: IXMLDocument;
  oNode: IXMLNode;
begin
  XMLDoc := NewXMLDocument;
  XMLDoc.Active := True;
  oNode := XMLDoc.AddChild('Test1');
  oNode.AddChild('Test2');

  XMLDoc.SaveToFile(C:\Temp\Test.xml);
end;
Avatar billede hugopedersen Nybegynder
11. maj 2009 - 07:12 #8
kroning og js_delphi smid lige et svar så i alle kan dele points.

Jeg er desværre ikke kommet ret meget videre med projektet da der er blevet skubbet noget vigtigere foran.
Men det er vist tid at få ryddet op her.
Avatar billede kroning Nybegynder
11. maj 2009 - 08:03 #9
k
Avatar billede js_delphi Nybegynder
11. maj 2009 - 08:21 #10
Held og lykke med sagerne.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester