Vergleich zweier Grids

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
mtbf40
Beiträge: 72
Registriert: Do 3. Nov 2011, 16:39

Vergleich zweier Grids

Beitrag von mtbf40 »

Hallo,

ich benötige wieder mal Hilfe von denen die Bescheid wissen!!
Im Anhang stelle ich das Projekt zur Verfügung.

Der Ablauf ist folgender:
  • einlesen von zwei xml Files
  • Ausgabe der eingelesenen Files in zwei Grids
  • Vergleich der beiden Grids wobei...
    es finden zwei Run's statt
    • Vergleich Name
      hier soll die rechte Zelle (rechtes Grid - Name) markiert werden, wenn im linken Grid die entsprechende Zelle leer ist
    • Vergleich Value
      hier soll die Zelle (rechtes Grid - Value) markiert werden, wenn im linken Grid der Wert abweichend ist
Das ganze soll funktionieren, wenn...
  • Bild up / Bild down gedrückt wird
    Pfeiltasten up/down
    Mouse Rad up/down
    Scrollbalken bewegt wird
Ich probiere schon seit Wochen an einer Lösung, aber es gibt immer nur Teilerfolge.
Vielleicht bekommen wir gemeinsam eine Lösung hin... :idea:

Die GUI sieht noch bescheiden aus - ich weiß :roll: - das kommt dann zum Schluß...
Dateianhänge
xml_compare.7z
(1.46 MiB) 73-mal heruntergeladen

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Vergleich zweier Grids

Beitrag von Soner »

Das ist leicht, nach dem Lesen der Dateien musst du einfach vergleichen und die Ergebnisse davon im Grid speichern, z.B. in einer versteckten Spalte. Dann bei StringGrid.OnPrepareCanvas einfach die Zeile mit fehlende oder abweichende Werte farblich anders markieren.
Folgende Events brauchst du ja gar nicht, weil man einmal am Anfang prüft:
mtbf40 hat geschrieben:
Mi 18. Okt 2023, 17:52
Bild up / Bild down gedrückt wird
Pfeiltasten up/down
Mouse Rad up/down
Scrollbalken bewegt wird
Haben die meisten XML-Dateien nicht Baumstruktur? Dafür wäre eigentlich vielleicht Treeview besser geeignet.
Aber du kannst auch aus StringGrid zu Treeview umwandeln, Ich habe es gemacht, es macht Spaß und flexibler als Treeview. Dafür braucht man 3 Spalten, eine versteckte Spalte für Knotenlevel, eine für die Anzeige von "+/-"-Knöpfe , und eine versteckte Spalte für "zusammengefaltet oder nicht(collapsed)". Wenn man StringGrid.RowHeight[xyz]:=0 macht, dann wird die Zeile unsichtbar.

Ich würde auch gleich XML-Unit von Freepascal nehmen.

Das ist alles sehr einfach und es macht Spaß.

Ich wünsche dir viel Spaß.

Antworten