AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi TXMLDocument Struktur erstellen jedoch bleibt die Datei leer
Thema durchsuchen
Ansicht
Themen-Optionen

TXMLDocument Struktur erstellen jedoch bleibt die Datei leer

Ein Thema von TUX_der_Pinguin · begonnen am 5. Dez 2008 · letzter Beitrag vom 9. Dez 2008
 
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: TXMLDocument Struktur erstellen jedoch bleibt die Datei

  Alt 8. Dez 2008, 07:59
Hier mal der komplette Quelltext der Konsolenanwendung inkl. der Coinitialize Anweisung.

Also das Programm soll eine ini Datei einlesen und die Daten dann entsprechend in einer XML Datei wieder speichern.

In einer Test Anwendung (GUI) passiert ebenfalls nichts, die Datei wird zwar erstellt aber immer ohne Inhalt. In der
Konsolen Anwendung erhalte ich nach der Tastenabfrage am Ende noch eine Exception die aber nicht näher Beschrieben wird
oder der Ursprung festzustellen ist.

Irgendwie bin ich grade ziemlich ratlos. Was vielleicht mal helfen würde wenn mir jemand ein kleines Beispiel geben
könnte wie man mit Hilfe von TXMLDocument eine XML Datei erzeugt. Also ein funktionierendes Beispiel

Delphi-Quellcode:
program TabConv;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  INIFiles,
  Forms,
  Classes,
  uTools,
  xmldom,
  XMLIntf,
  msxmldom,
  XMLDoc,
  ActiveX;

type
  tTable = record
    Name : String;
    Fields : array of string;
  end;

  tTables = array of tTable;


var
  INI : TIniFile;
  Tables : tTables;
  Sections : TStringList;
  Idx,i : Integer;
  Count : Integer;
  XMLDoc : TXMLDocument;
  RootNode : IXMLNode;
  ItemNode : IXMLNode;

begin
  try
  { TODO -oEntwickler -cKonsole Main : Hier Code einfügen }
    //init
    CoInitialize(nil);
                             
    //Ini Datei öffnen
    ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'tables.ini');
    try
      //Sektionen ermitteln
      Sections := TStringList.Create;
      try
        //Sektionen aus ini Datei auslesen
        ini.ReadSections(Sections);

        //Anzahl der Tabellen setzen
        SetLength(Tables, Sections.Count);

        //Namen der einzelnen Tabellen ermitteln
        for Idx := 0 to High(Tables) do begin
          Tables[Idx].Name := Sections[Idx];
        end;{for}

      finally
        Sections.Free;
      end;

      //Tabellen einlesen
      if Length(Tables) > 0 then begin
        for Idx := 0 to High(Tables) do begin
          //Anzahl der "Spalten" ermitteln
          Count := ini.ReadInteger(Tables[Idx].Name, 'count', 0);

          //Anzahl der Spalten zuweisen...
          SetLength(Tables[Idx].Fields, Count);

          ///"Spalten" einlesen
          for i := 0 to High(Tables[Idx].Fields) do begin
            Tables[Idx].Fields[i] := ini.ReadString(Tables[Idx].Name, IntToStr(i), 'IIDNR');
          end;{for}

        end;{for}
      end;{if}

    finally
      ini.Free;
    end;

    //Nach XML Konvertieren
    if Length(Tables) > 0 then begin
      XMLDoc := TXMLDocument.Create(Application);
      try
        XMLDoc.Active := True;
        XMLDoc.Version := '1.0';
        XMLDoc.Encoding := 'UFT-8';

        //Root Node
        RootNode := XMLDoc.AddChild('tables');

        for Idx := 0 to High(Tables) do begin
          ItemNode := RootNode.AddChild('tab'+IntToStr(Idx));
          ItemNode.Attributes['name'] := Tables[Idx].Name;
        end;{for} 

        //XML Dokument formatieren
        XMLDoc.XML.Text := FormatXMLData(XMLDoc.XML.Text);
        XMLDoc.Active := True;

        //XML Dokument speichern
        XMLDoc.SaveToFile('tables.xml');
      finally
        XMLDoc.Free;
      end;

    end;{if}

    Writeln;
    Writeln(fAnsiToAscii('Beliebige Taste für weiter...'));
    Readln;

  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;

  //deinit
  CoUninitialize;

end.
Falls das jemand bei Sich Testen will die Ini Datei ist wie folgt aufgebaut.

Zitat:
[Tab_Name]
count=3
0=Feld1
1=Feld2
2=Feld3
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz