Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   XML - Zu viele Parameter (https://www.delphipraxis.net/55818-xml-zu-viele-parameter.html)

MaM 27. Okt 2005 13:41


XML - Zu viele Parameter
 
Moin,


ich habe eine Procedure welche folgenden Inhalt hat:

Delphi-Quellcode:
procedure TF_Hauptfenster.Add(XML_File: TStringList);
begin
  XML_File.Add(' <Holyday>');
  XML_File.Add('   <Date>'+Edit1.Text+'</Date>');
  XML_File.Add(' </Holyday>');
end;

Diese Procedure wird in einer nachfolgenden benötigt:

Delphi-Quellcode:
procedure TF_Hauptfenster.Button1Click(Sender: TObject);
var
  i: Integer;
  MyItem: TListItem;
  XML_File: TStringList;
begin
  XML_File:=TStringList.Create;

  MyItem:= LV_Aufgaben.Items.Add;
  MyItem.SubItems.Add(Edit1.Text);

  XML_File.Add('<Holydays>');
  For i:=0 to LV_Aufgaben.Items.Count-1 do
  begin
    Add(XML_File, i); ------------> Zu viele Parameter
  end;
  XML_File.Add('</Holydays>');}

  XML_File.SaveToFile(ExtractFilePath(Application.ExeName)+'test.xml');
end;
Ich bekomme folgende Fehlermeldung, in der markierten Zeile: Zu viele Parameter.
Wo liegt der Fehler, wie kann ich das Problem lösen?



MaM

sh17 27. Okt 2005 13:43

Re: XML - Zu viele Parameter
 
Deine Funktion Add möchte nur eine Stringliste

Du willst Ihr eine Stringliste und ein i andrehen

MaM 27. Okt 2005 14:11

Re: XML - Zu viele Parameter
 
Zitat:

Zitat von sh17
Deine Funktion Add möchte nur eine Stringliste

Du willst Ihr eine Stringliste und ein i andrehen

Und wie kriege ich es hin, dass ich ihr beides "andrehen" kann?


MaM

leddl 27. Okt 2005 14:18

Re: XML - Zu viele Parameter
 
Was würde das bringen? Du benutzt das i doch in der Prozedur gar nicht. Warum willst du es dann mit übergeben? :roll:

MaM 27. Okt 2005 14:24

Re: XML - Zu viele Parameter
 
Ok, dann anders.
Wenn ich einen Wert eintrage so steht er korrekt im ListView und auch die Datei wird gesichert.
Nur, trage ich einen 2. Wert ein, so wird ein neuer Eintrag in der XMl Datei eingefügt, jedoch der alte wird überschrieben (im ListView wird es richtig dargestellt).

----------------------
- <Holydays>
- <Holyday>
<Date>Edit2</Date>
</Holyday>
- <Holyday>
<Date>Edit2</Date>
</Holyday>
</Holydays>
----------------------

Was mach ich falsch?




MaM

MaM 30. Okt 2005 19:16

Re: XML - Zu viele Parameter
 
*schieb*



MaM

marabu 30. Okt 2005 19:38

Re: XML - Zu viele Parameter
 
Hallo MaM,

wahrscheinlich bin ich nicht der einzige hier, der sich keinen rechten Reim auf deine Beschreibung machen kann.

Freundliche Grüße vom marabu

Der_Unwissende 30. Okt 2005 19:43

Re: XML - Zu viele Parameter
 
Nun ja, auch wenn ich mir nicht ganz sicher bin, ob ich dich richtig verstanden habe, aber wenn du dir etwas überschreibst, liegt das doch wohl daran, das du die TStringList XML_File mit jedem Aufruf deiner Methode neu anlegst. Die enthält natürlich nicht mehr die alten Werte (und du müllst dir nebenbei bemerkt den Speicher zu). Die solltest du etwas globaler anlegen (also als Klassenvariable), im Create erzeugen und im destroy auch wieder Freigeben!
Jedenfalls dürfte das dein Problem sein, wenn ich dich richtig verstehe.

Gruß Der Unwissende

marabu 31. Okt 2005 09:31

Re: XML - Zu viele Parameter
 
Wenn ich genau lese, dann werden zwei Einträge erfolgreich einer ListView hinzugefügt. Nach dem Speichern als XML-Dokument findet man aber nur den ersten Eintrag in der Datei. Der gezeigte Code gibt das nicht her. Das Neuanlegen der StringList scheint in Ordnung zu sein, da die StringList ja nur temporär zum Aufbau des XML-Dokumentes und dessen Speicherung verwendet wird. Was man bemängeln sollte, ist das fehlende Free für die StringList - aber auch das kann nicht der Grund für das beschriebene Verhalten sein.

Grüße vom marabu

Der_Unwissende 31. Okt 2005 10:12

Re: XML - Zu viele Parameter
 
Na ja, prinzipiell hast du recht mit
Zitat:

Das Neuanlegen der StringList scheint in Ordnung zu sein, da die StringList ja nur temporär zum Aufbau des XML-Dokumentes und dessen Speicherung verwendet wird
Aber wenn du dir den ganzen Code anschaust, dann siehst du dass in der Add einfach das genommen wird, was gerade in Edit1.Text steht. Also legt er i mal den Eintrag Edit1.Text an, der natürlich immer gleich ist. Also entweder nur ein add (ohne for-Schleife) und eine globale Stringliste, oder die Add so anpassen, dass nicht bei jedem add Edit1.Text eingetragen wird.

Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr.
Seite 1 von 2  1 2      

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