Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi HTML Navigation aus CSV-Datei erstellen ... (https://www.delphipraxis.net/108723-html-navigation-aus-csv-datei-erstellen.html)

Grolle 18. Feb 2008 14:01


HTML Navigation aus CSV-Datei erstellen ...
 
Hallo,

ich möchte aus einer CSV-Datei eine HTML-Menüstruktur erstelen und finde nicht den richtigen Ansatz :? Die CSV sieht so aus:

main1;Submenu1,Sub2,Sub3
main1;Submenu2,Sub2
main2;Submenu3,Sub2,Sub3
main2;Submenu4,Sub2

Daraus soll folgende Struktur entstehen:
Delphi-Quellcode:
main1(aktiv) main2

Submenu1
  Sub2
    Sub3
Submenu2
  Sub2
Die Daten habe ich jetzt in einer Stringlist und komm irgendwie nicht weiter ...

Viele Grüße ...

Pfoto 18. Feb 2008 14:23

Re: HTML Navigation aus CSV-Datei erstellen ...
 
Hallo Grolle!

ich würde es so machen:

1) Stringlist mit For-Schleife durcharbeiten

2) Bei jedem Durchgang die aktuelle Zeile holen
und per CommaText in eine separate StringList umwandeln

3) Diese Liste, die ja einen Menüzweig darstellt, nochmals
mit einer inneren For-Schleife abarbeiten und das Menü
entsprechend bauen (vorzugsweise mit UL und LI-Elementen)



Gruß
Pfoto

Grolle 18. Feb 2008 14:28

Re: HTML Navigation aus CSV-Datei erstellen ...
 
Hallo,

danke für die Antwort. Ich vergaß zu sagen, dass ich die Dateien entsprechend erstellen möchte.
Zitat:

Zitat von Pfoto
2) Bei jedem Durchgang die aktuelle Zeile holen
und per CommaText in eine separate StringList umwandeln

Da sehe ich das Problem, dass ich doppelte Vorkommen ausschließen muss z.B. main1 kommt ja nur
einmal vor.

Viele Grüße ...

Luckie 18. Feb 2008 15:05

Re: HTML Navigation aus CSV-Datei erstellen ...
 
Ich würde eine XML-Datei benutzen, weil man dort sehr schön baumartige Strukturen abbilden kann.

Namenloser 18. Feb 2008 15:12

Re: HTML Navigation aus CSV-Datei erstellen ...
 
Dann könnte er ja auch gleich HTML benutzen, das ja sozusagen XML ist (und wehe jetzt kommt einer und sagt HTML ist SGML und nicht das gleiche wie XML... :mrgreen: ).
Ich denke, er wird Gründe haben, wieso er CSV benutzen möchte.

Luckie 18. Feb 2008 15:18

Re: HTML Navigation aus CSV-Datei erstellen ...
 
Zitat:

Zitat von NamenLozer
Ich denke, er wird Gründe haben, wieso er CSV benutzen möchte.

Da er selbige nicht genannt hat, habe ich eben einen alternativ Vorschlag gemacht.

Grolle 18. Feb 2008 15:29

Re: HTML Navigation aus CSV-Datei erstellen ...
 
Hallo,

ja, xml wäre einfacher, kann ich aber leider nicht drauf ausweichen. Gibt diverse
Gründe u. a. die Bearbeitbarkeit mit Excel und noch andere ...

Pfoto 18. Feb 2008 16:18

Re: HTML Navigation aus CSV-Datei erstellen ...
 
Zitat:

Zitat von Grolle
Hallo,

danke für die Antwort. Ich vergaß zu sagen, dass ich die Dateien entsprechend erstellen möchte.
Zitat:

Zitat von Pfoto
2) Bei jedem Durchgang die aktuelle Zeile holen
und per CommaText in eine separate StringList umwandeln

Da sehe ich das Problem, dass ich doppelte Vorkommen ausschließen muss z.B. main1 kommt ja nur
einmal vor.

Viele Grüße ...

Hast du denn vor, das Ganze immer gleich aufzubauen, also
es gibt 1) immer ein horizontales Hauptmenü und 2) darunter
befinden sich immer vertikale Untermenüs?

Ich sehe das Problem, "intern" wieder an den Punkt zu springen,
wo das Hauptmenü weitergeführt wird.

Vergegenwärtige dir doch zunächst mal die empfohlene Struktur
in HTML:

<ul>[*]Main
<ul>[*]Submenu1
<ul>[*]Sub2[*]Sub3[/list] [/list] [/list]
entspräche:
main1;Submenu1,Sub2,Sub3
(wenn ich grad nicht auf dem Schlauch stehe...)


Wenn du nun zur zweiten Zeile kommst,
wie willst du dann in main1 wieder "einhaken"
und das Menü weiterführen?

Vielleicht kannst du doch eine Lösung
auf Basis eines Trees aufbauen; zumindest intern
z.B. in einen XML-Tree, so dass du bequemer einzelne
Nodes ansprechen und diese erweitern kannst.

Gruß
Pfoto

Grolle 18. Feb 2008 16:34

Re: HTML Navigation aus CSV-Datei erstellen ...
 
Zitat:

Zitat von Pfoto
Hast du denn vor, das Ganze immer gleich aufzubauen, also
es gibt 1) immer ein horizontales Hauptmenü und 2) darunter
befinden sich immer vertikale Untermenüs?

Genau!
Zitat:

Zitat von Pfoto
Ich sehe das Problem, "intern" wieder an den Punkt zu springen,
wo das Hauptmenü weitergeführt wird.

Ja, das ist eins der Probleme, vor dem ich im Moment stehe ;-)
Zitat:

Zitat von Pfoto
Vergegenwärtige dir doch zunächst mal die empfohlene Struktur
in HTML:

<ul>[*]Main
<ul>[*]Submenu1
<ul>[*]Sub2[*]Sub3[/list] [/list] [/list]
entspräche:
main1;Submenu1,Sub2,Sub3
(wenn ich grad nicht auf dem Schlauch stehe...)

Das ist so korrekt!
Zitat:

Zitat von Pfoto
Wenn du nun zur zweiten Zeile kommst,
wie willst du dann in main1 wieder "einhaken"
und das Menü weiterführen?

Ich denke, das Menü sollte zuerst als ganzes betrachtet werden,
deswegen die vorherige Anmerkung, dass eine zeilenweise Bearbeitung
mich nicht weiterbringt.

Viele Grüße ....

Pfoto 18. Feb 2008 16:38

Re: HTML Navigation aus CSV-Datei erstellen ...
 
Zitat:

Zitat von Grolle
Ich denke, das Menü sollte zuerst als ganzes betrachtet werden,
deswegen die vorherige Anmerkung, dass eine zeilenweise Bearbeitung
mich nicht weiterbringt.

Ich meine schon, dass es zweilenweise möglich wäre; eben dann,
wenn zuerst das Menü "intern" in einen XML-Baum (o.ä) umgewandelt
wird.
Denn wenn du ab der zweiten Zeile nochmals auf MainMenu1 triffst,
kannst du bequem im Baum im untersten Level danach suchen.


Gruß
Pfoto

Grolle 18. Feb 2008 16:55

Re: HTML Navigation aus CSV-Datei erstellen ...
 
Zitat:

Zitat von Pfoto
Ich meine schon, dass es zweilenweise möglich wäre; eben dann,
wenn zuerst das Menü "intern" in einen XML-Baum (o.ä) umgewandelt
wird.
Denn wenn du ab der zweiten Zeile nochmals auf MainMenu1 triffst,
kannst du bequem im Baum im untersten Level danach suchen.

Ach so, da habe ich dich wohl missverstanden. Werde den Ansatz mal verfolgen.
Weisst du zufällig, wie ich die Stringlist schnell konvertieren könnte?

Viele Grüße,

Pfoto 18. Feb 2008 17:42

Re: HTML Navigation aus CSV-Datei erstellen ...
 
Zitat:

Zitat von Grolle
Weisst du zufällig, wie ich die Stringlist schnell konvertieren könnte?

Sorry, nein, eine Komponente kenne ich da nicht -- ich habe auch wenig
Erfahrung im Umgang mit der XML-Komponente in Delphi.
Letztendlich müsstest du doch, wenn du auf einen Menüeintrag triffst,
zunächst einmal einen Knoten an den Elternknoten hängen...
alles weitere kannst du ja nach und nach machen. Das wird schon!

Gruß
Pfoto

bluesbear 18. Feb 2008 18:29

Re: HTML Navigation aus CSV-Datei erstellen ...
 
Zitat:

Zitat von Grolle
main1;Submenu1,Sub2,Sub3
main1;Submenu2,Sub2
main2;Submenu3,Sub2,Sub3
main2;Submenu4,Sub2

Du brauchst die Möglichkeit, herauszufinden, ob ein (Sub)Menüeintrag bereits existiert. Wenn ja, den nächsten Eintrag anhängen, wenn nein, den Menüpunkt erstellen, und dann den nächsten anhängen.
Dazu eine entsprechende Datenstruktur zur Abbildung als Zwischenspeicher zu verwenden, halte ich für einen guten Ansatz. Also (jetzt nur als Beispiel) erst ein TreeView aus der csv füllen, und daraus dann das HTML Menü basteln. Natürlich brauchst Du kein TreeView dafür, aber eine interne Struktur, die einen Baum darstellt.

Grolle 24. Feb 2008 18:42

Re: HTML Navigation aus CSV-Datei erstellen ...
 
Hallo,

intern habe ich jetzt eine Datenstruktur (XML) erstellt, mit der ich ganz gut arbeiten kann. Vielleicht hat trotzdem jemand einen Tip, wie ich folgende XML-Struktur schnell in eine HTML-Liste umwandeln kann:
Delphi-Quellcode:
<TopMenu1 text="TopMenu1" url="menu_ru_1.html" frame="dummy">
  <Eintrag1 text="Eintrag1" frame="dummy">
    <Untermenü_Level1 text="Untermenü Level1" frame="dummy">
      <Level5 text="Level5" frame="datei_a.pdf" />
    </Untermenü_Level1>
    <Untermenü_Level2 text="Untermenü Level2" frame="dummy">
      <Level6 text="Level6" frame="datei_b.pdf" />
    </Untermenü_Level2>
  </Eintrag1>
  <Eintrag2 text="Eintrag2" frame="dummy">
    <Untermenü_Level3 text="Untermenü Level3" frame="datei_c.pdf" />
    <Untermenü_Level4 text="Untermenü Level4" frame="dummy">
      <Level8 text="Level8" frame="datei_d.pdf" />
    </Untermenü_Level4>
  </Eintrag2>
</TopMenu1>
Sollte dann so aussehen:
Delphi-Quellcode:
Eintrag1
    Untermenü_Level1
                Level5
    Untermenü_Level2
                Level6
Eintrag2
    Untermenü_Level3 
    Untermenü_Level4
                Level8

usw ...
Viele Grüße ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:37 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-2025 by Thomas Breitkreuz