Autor Beitrag
Gobo
Hält's aus hier
Beiträge: 2

WinXP Pro, Linux
Delphi 2006 Architekt, Bash
BeitragVerfasst: So 24.09.06 08:37 
Hallo,

ich möchte vorausschicken, dass sich meine Programmierkenntnisse bis vor einigen Tagen auf bash scripting beschränkt haben.
Delphi ist noch Neuland für mich, drum bitte nicht böse sein wennich dumme Fragen stelle. :)

Mein Problem:

Ich schreibe an einem Prog zur Auswertung von Störungsmeldungen. Es gibt eine Menge an Checkboxen hinter denen je eine
Urasche für die Störung steht. Meistens wird nur eine dieser Boxen markiert aber es sind auch Mehrfachnennungen möglich.
Nun stell ich mir die Frage wie ich diese Mehrfachnennungen in XML speichern kann.
Ich verwende simpleXML von den Jedi Componenten.

Bis jetzt sieht das Ganze so aus

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.Button3Click(Sender: TObject);
begin
  if RadioGroup1.ItemIndex = 0 then Art := 'Kabelinternet';
  if RadioGroup1.ItemIndex = 1 then Art := 'Funkinternet';
  if RadioGroup1.ItemIndex = 1 then Art := 'Telefonie';

 with XmlDoc.Root.Items.Add('Stoerungen') do
  begin
  items.Add('Diensthabender', edDiensthab.Text);
  items.Add('Begin', Label1.Caption);
  items.Add('Stoerungsart',Art);
    if CbKEmailProb.Checked = True then Grund := 'Email Problem';
    if CbKNicDown.Checked = True then Grund := 'Netzwerkkarte ausgeschaltet';
    if CbKPowerDown.Checked = True then Grund :='Strom abgeschaltet';
  items.Add('Stoerungsgrund', Grund);

  items.Add('Ende',Label2.Caption);
  end;
end;


Wenn ich jetzt Mehrfachnennungen habe, wird natürlich immer nur die letzte Nennung in die XML geschrieben.

Bitte um Hilfe

lg
gobo

Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: So 24.09.06 14:02 
Erzeuge einfach unter Stoerungsgrund mehrere Knoten, je einen für jeden Grund, der angegeben wurde:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.Button3Click(Sender: TObject);
begin
  if RadioGroup1.ItemIndex = 0 then Art := 'Kabelinternet';
  if RadioGroup1.ItemIndex = 1 then Art := 'Funkinternet';
  if RadioGroup1.ItemIndex = 1 then Art := 'Telefonie';

 with XmlDoc.Root.Items.Add('Stoerungen') do
  begin
  items.Add('Diensthabender', edDiensthab.Text);
  items.Add('Begin', Label1.Caption);
  items.Add('Stoerungsart',Art);
  with items.Add('Stoerungsgrund') do begin
    if CbKEmailProb.Checked = True then items.add('Grund','Email Problem');
    if CbKNicDown.Checked = True then items.add('Grund','Netzwerkkarte ausgeschaltet');
    if CbKPowerDown.Checked = True then items.add('Grund','Strom abgeschaltet');
    end;
  items.Add('Ende',Label2.Caption);
  end;
end;

Ich hoffe, ich habe das simpleXML so richtig verstanden, ansonsten musst Du halt schauen, wie man Elemente erzeugt. Ich verwende etweder die XMl-Klasse von Delphi (MSXML) oder openXml.
Im Endeffekt dürfte dann eine XML-Datei z.B. so aussehen:
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<Stoerungen>
  <Diensthabender>Jemand</Diensthabender>
  <Begin>13.02.2003</Begin>
  <Stoerungsart>Telefonie</Stoerungsart>
  <Stoerungsgrund>
    <Grund>Email Problem</Grund>
    <Grund>Strom abgeschaltet</Grund>
  </Stoerungsgrund>
  <Ende>14.02.2005</Ende>
</Stoerungen>

</Stoerungen>
Gobo Threadstarter
Hält's aus hier
Beiträge: 2

WinXP Pro, Linux
Delphi 2006 Architekt, Bash
BeitragVerfasst: So 24.09.06 18:43 
Du bist mein HELD ;)

So blind kann ein einzelner Mensch sein .......

Danke

gobo