![]() |
Problem mit xml File auslesen und in TTreeView anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich bekomme leider nicht das gewuenschte Resultat mit diesem Code. Er sollte mir nur eine Translation hinschreiben per ObjectName. Wie das ganze aussieht seht ihr im Screenshot.
Delphi-Quellcode:
Kann mir mal jemand sagen was falsch ist?
procedure TfoFrmMain.ShowLanguagesInTreeView;
var I, J, K, L: Integer; lLanguageNode, lTFormNode, lTransNode: TTreeNode; begin TV.Items.Clear; for I := Low(Languages) to High(Languages) do begin lLanguageNode := TV.Items.Add(nil, 'Sprache: ' + Languages[I].FLanguage); for J := Low(Languages) to High(Languages[I].TForms) do begin lTFormNode := TV.Items.AddChild(lLanguageNode, 'Form: ' + Languages[I].TForms[J].FormName); for K := Low(Languages) to High(Languages[I].TForms[J].TWords) do begin lTransNode := TV.Items.AddChild(lTFormNode, 'ObjektName: ' + Languages[I].TForms[J].TWords[K].ObjectName); for L := Low(Languages) to High(Languages[I].TForms[J].TWords) do TV.Items.AddChild(lTransNode, 'Translation: ' + Languages[I].TForms[J].TWords[K].TranslatedString) end; end; end; // Alle Knoten öffnen TV.FullExpand; end; |
Re: Problem mit xml File auslesen und in TTreeView anzeigen
Zitat:
Wenn ich das richtig verstehe, dann müsstest du die Schleifen für J und K ändern.
Delphi-Quellcode:
Mit der Schleife L das sieht mir auch ein wenig komisch aus, aber ohne die genauen Datentypen, wäre alles nur Vermutung.
for J := Low(Languages[I].TForms) to High(Languages[I].TForms) do
... for K := Low(Languages[I].TForms[J].TWords) to High(Languages[I].TForms[J].TWords) do mfg Tobias |
Re: Problem mit xml File auslesen und in TTreeView anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
und hier ist sie schon:
Delphi-Quellcode:
Was mir noch auffiel: Jedesmal wenn ich ein neues 'Objekt' hinzufuege und die Procedure ShowLanguagesInTreeView aufgerufen wird zum aktualisieren tritt das Problem auf. Hier nochmal ein neuer Screenshot der das ganz schoen deutlich macht. Zuerst hab ich ein Objekt im TreeView. Hervorragend. Genauso will ich das sehen. Dann speichere ich das 2. Objekt und dann hab ich im TreeView auf einmal 2 Translations von BtnLoad und 2 Translations von BtnSave. Genauso dann wenn ich das 3. Objekt speichere.
TLangWord = class(TObject)
private ObjectName: String; TranslatedString: String; end; TLangForm = class(TObject) private FormName: String; TWords: Array of TLangWord; end; TLanguage = class(TObject) private TForms: Array of TLangForm; FLanguage: String; end; Ich hoffe das hilft. Ich weis hier nicht weiter. |
Re: Problem mit xml File auslesen und in TTreeView anzeigen
@Leonard:
Herzlich willkommen in der Delphi-PRAXiS. Die falschen Grenzen für die Laufvariablen sind ganz sicher zu bemängeln. @Mackhack: Mir scheint du hast deine Speicherstruktur etwas unglücklich gewählt. Nicht "Languages: array of TLanguage" sollte der Ausgangspunkt sein, sondern eher eine Forms-Kollektion:
Code:
Freundliche Grüße vom marabu
- Form: MainForm
- Control: SaveButton Deutsch: &Speichern Englisch: &Save - Control: UrlLabel Neutral: $URL - Form: LoginForm ... |
Re: Problem mit xml File auslesen und in TTreeView anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Danke! @Topic Ich habe mit dem Hinweis von marabu über die geänderte Struktur mal ein kleines Beispiel erstellt, wie du die Daten auch verwalten könntest. Ich hoffe, dass das mit den TCollection und TCollectionItem alles so richtig ist. Für die verschiedenen Sprachtypen (siehe Beispiel) gibts vielleicht Standards, die man dann nehmen sollte, aber auf die Schnelle gings erstmal so. Was das Beispiel macht: Im FormCreate wird ein Formular in die Struktur eingelesen (das Beispiel von marabu). Über die Taste "Anzeigen", wird immer die aktuell gespeicherte Struktur im TreeView dargestellt. Mit der Taste "LoginForm" kannst du ein Beispielformular in die Struktur einfügen, welches die Übersetzung für 2 Tasten beinhaltet. Mit der 3. Taste "Form +" werden Daten abgefragt, die dann eingefügt werden, musst du einfach mal probieren. Wegen der Dateigrösse habe ich mal nur die dfm und pas Datei gepackt angehängt. Ich hoffe, das hilft weiter... mfg Leonard |
Re: Problem mit xml File auslesen und in TTreeView anzeigen
Zitat:
vielen Dank fuer deinen Hinweis. Weist du auch warum dieser Effekt bei mir auftritt den ich im Screenshot dargestellt habe? Denn auch mit geaenderter Struktur wuerde ich ja wieder diesen "Gruscht" doch angezeigt bekommen. |
Re: Problem mit xml File auslesen und in TTreeView anzeigen
Zitat:
mfg Leonard |
Re: Problem mit xml File auslesen und in TTreeView anzeigen
Hi Leo..
nein tut es nicht. Denn wenn du dir die xml file im Browser anguckst ist alles wie es sein soll! Es muss in der Show...-Procedure liegen! Denn die wird immer aufgerufen nachdem ich den Hinzufuegen Button gedrueckt habe. Mit diesem Button wird noch nichts in die File geschrieben sondern nur in die Arrays! |
Re: Problem mit xml File auslesen und in TTreeView anzeigen
Zitat:
Wenn mit dem Button noch nichts ins File geschrieben wird, dann bringt auch das anschauen im Browser nicht viel, denke ich. Die procedure TfoFrmMain.ShowLanguagesInTreeView macht nichts weiter, als die Felder zu durchlaufen (auch wenn bei der 1. Version die Grenzen nicht stimmten). Also sieht es mit dem was du gezeigt hast so aus, dass die Werte einfach mehrfach in den Feldern stehen. mfg Leonard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 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 by Thomas Breitkreuz