Autor Beitrag
spoof
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Mo 11.11.13 12:43 
Morgen, ich hab mich vor kurzem mit dem Speichern und auslesen der Registry und Ini Dateien beschäftigt. Das war soweit kein Problem, allerdings beschäftige ich mich nun mit XML un dort komme ich irgendwie nicht mit klar. Per google finde ich leider nur Tutorials die 10 Jahre alt sind,
www.delphi-treff.de/...und-deserialisieren/
ist das einzigste was mir vermitteln konnte wie XML funktioniert, allerdings habe ich Probleme damit den beispielcode funktionsfähig zu bekommen:


ausblenden volle Höhe Delphi-Quelltext
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:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type TMensch = class(TObject)
  public
    Alter: Byte;
    Name: String;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Mensch: TMensch;
Ser: XmlSerializer;
Writer: StreamWriter;
begin
  Mensch := TMensch.Create;
  Mensch.Alter := 15;
  Mensch.Name := 'fido';

  Writer := StreamWriter.Create('Mensch.xml');
  Ser := XmlSerializer.Create(typeof(TMensch));
  Ser.Serialize(Writer, Mensch);
  Writer.Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Mensch: TMensch;
Ser: XmlSerializer;
Reader: StreamReader;
begin
  Reader := StreamReader.Create('Mensch.xml');
  Ser := XmlSerializer.Create(typeof(TMensch));
  Mensch := Ser.Deserialize(Reader) as TMensch;
  Reader.Close;

  MessageBox.Show(Mensch.Name + ' ist ' + Mensch.Alter.ToString + ' Jahre alt.');
end;

end.



Mir wird gesagt dass XmlSerializer und StreamReader undeklarierte bezeichner sind. Ich kenne die Variablenarten leider nichtmals, und konnte auch nichts richtiges finden, ich kann mir zwar denken was sie machen, streamreder ist ein stream der den Inhalt der XML ausliest und xmlserializer erkennt das XML Format (denk ich mal).
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 11.11.13 12:54 
Delphi für .NET ist tot, deshalb kannst du auch mit den entsprechenden Tutorials nichts anfangen. An den Unitnamen sieht man, dass du ein aktuelles Delphi hast, das kann .NET nicht ohne Umwege ansprechen.

Für XML gibt es IXMLDocument aus der Unit Xml.XmlIntf:
docwiki.embarcadero....s/XE5/de/Xml.XMLIntf

Für diesen Beitrag haben gedankt: spoof
spoof Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Mo 11.11.13 13:09 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Delphi für .NET ist tot, deshalb kannst du auch mit den entsprechenden Tutorials nichts anfangen. An den Unitnamen sieht man, dass du ein aktuelles Delphi hast, das kann .NET nicht ohne Umwege ansprechen.

Für XML gibt es IXMLDocument aus der Unit Xml.XmlIntf:
docwiki.embarcadero....s/XE5/de/Xml.XMLIntf


Ok danke dann werd ich mich mal mit IXMLDocument beschäftigen.
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Mo 11.11.13 13:11 
und wenn dich serialisieren/deserialisieren interessiert, dafür habe ich für die "alte" RTTI ein Tutorial geschrieben, das noch drauf wartet aktualisiert zu werden. Aber die neue RTTI ist in div. Blogeinträgen (Marco Cantu....) und Büchern schon sehr ausführlich erläutert...

Grüße

Für diesen Beitrag haben gedankt: spoof