Winfried und die Tool-Programmierung
Juni 27, 2011 Hinterlasse einen Kommentar
Belljangler: „Immer noch nicht damit fertig, die Parametrierung der Dokumentem-Präsentation programmiert zu haben?“
Winfried Sobottka: „Nein. Ich denke mehr an die ultimative Lösung für HTML-Seiten als nur an die Dokumentenpräsentation, und arbeite zugleich darauf hin. Da ich Jahre lang so gut wie gar nicht programmiert habe, brauche ich Zeit zum Nachdenken.“
Belljangler: „Du achtest vor allem darauf, saubere Routinen zu erstellen, die so variabel sind, dass Du letztlich alles damit machen können wirst, wie man dem aktuellen Stand, soeben geschrieben, nun entnehmen kann?“
10 OPEN "build.0" AS #1 LEN=12:FIELD #1, 12 AS SATZ$ 13 GET #1, 1:GET #1,1:SEITEN%=VAL(LEFT$(SATZ$,4)):CLOSE #1: 20 REM 21 REM ****++++**** Die Variable Seiten% gibt an, wieviele Seiten das Dokument umfasst 22 REM 30 DIM TEXT%(SEITEN%), seitenname$(seiten%), bildname$(seiten%),textname$(seiten%), grunddokument(seiten%) 45 OPEN "texte\texte.0" AS #1 LEN=1:FIELD #2,1 AS E$:FOR I=1 TO SEITEN%:GET #2,I%:TEXT%(I%)=VAL(E$):NEXT I%:CLOSE #2 46 REM ****++++**** in text%(i%) ist angegeben, ob es für Seite i einen Text gibt (1) oder nicht (0) 50 REM 51 REM ******++++**** Vorlauf zum Einlesen aller notwendigen Daten dere Ebene 1 ******* 200 FOR SEITE%=1 TO SEITEN% 211 seitenname$(seite%)= "form-"+RIGHT$("000"+RIGHT$(STR$(SEITE%),LEN(STR$(SEITE%))-1),3)+".php" 215 REM ****++++**** Seitennamen sind abgestellt in seitenname$(seite%), von form-001.php bis ggfs. form-999.php 251 IF SEITE%=1 AND SEITE%=SEITEN% THEN GRUNDDOKUMENT$(seite%)="gg-00.php" 252 IF SEITE%=1 AND SEITE%<SEITEN% THEN GRUNDDOKUMENT$(seite%)="gg-01.php" 253 IF SEITE%>1 AND SEITE%<SEITEN% THEN GRUNDDOKUMENT$(seite%)="gg-02.php" 254 IF SEITE%>1 AND SEITE%=SEITEN% THEN GRUNDDOKUMENT$(seite%)="gg-03.php" 260 REM ****++++**** GRUNDDOKUMENT von SEITE% in GRUNDDOKUMENT(SEITE%) abgestellt 270 NAMENSTEIL$= RIGHT$("000"+RIGHT$(STR$(SEITE%),LEN(STR$(SEITE%))-1),3): TEXTNAME$(SEITE%)="texte\form-"+NAMENSTEIL$+".txt" 280 REM ****++++**** TEXTNAME$(SEITE%) enthält PFAD und NAMEN des zugehörigen Erklärungstextes 270 NAMENSTEIL$= RIGHT$("000"+RIGHT$(STR$(SEITE%),LEN(STR$(SEITE%))-1),3): BILDNAME$(SEITE%)="bilder\bild-"+NAMENSTEIL$+".jpg" 280 REM ****++++**** BILDNAME$(SEITE%) enthält PFAD und NAMEN des zugehörigen Erklärungstextes 300 NEXT SEITE% 310 REM ******++++**** Vorlauf zum Einlesen aller notwendigen Daten der Ebene 1 beendet ***********************!!!!!!!!!!!!!!!!
Winfried Sobottka: „Systematische Ordnung und Abstellen aller notwendigen Inhalte in Vektoren oder Matrizen sind eine sinnvolle Sache, wenn man Tools schreibt. Nur auf dem Wege kann man ein bestimmtes Problem letztlich mit einem Minimum an Routinen ultimativ erschlagen. Das setzt natürlich voraus, dass man zumindest einfache Variable in allen Anweisungen und auch in LINK-Addressen und als Dateinamen nutzen kann.“
Belljangler: „Mit einem Basic-Programm willst Du die ultimative Erstellung von HTML-Seiten erschlagen?“
Winfried Sobottka: „Natürlich nicht. Es werden zwei Basic- Programme werden. Eines für die Overlay-Erstellung, eines für den Aufbau der HTML-Seiten aus einem Overlay.“
Belljangler: „Inklusive Tabellenverschachtelung?“
Winfried Sobottka: „Na klar. Natürlich bei beliebiger Verschach- telung.“
Belljangler: „Was werden die größten Probleme sein?“
Winfried Sobottka: „Ich brauche in jedem Falle die Generation 2 meiner alten Basic-Tools, notfalls arbeite ich damit dann auf einem DOS-Rechner. Das Textprogramm bietet fast alles, was ich für die Overlay-Erstellung brauche, es fehlen nur ein paar Features. Um fehlende Features einbringen zu können, muss ich Sachen aus dem Textprogramm hinauswerfen, die ich nicht brauche, weil das Programm in der Summe seiner Funktionen bereits an die äußersten Grenzen von Basic geht. U.a. enthält es eine Routine, mit der man sich mathematisch Ausdrücke inkl. Klammerrechnung ausrechnen lassen kann – es ist einiges drin, was hinaus kann. Den geschaffenen Platz muss ich u.a. dafür einsetzen, innerhalb des Textes Tabellensätze für Untertabellen in einem Verzeichnis anzulegen und dann auch direkt aufrufen zu können – ebenfalls in Form eines Overlays präsentiert von der Textverarbeitung. Von dem Overlay der Tabelle muss dann der Sprung sowohl zurück zur Mutter als auch hin zu den Kindern möglich sein. Man muss sich hierarchisch im Tabellensystem bewegen können.“
Belljangler: „Wirst Du das am Bildschirm programmieren?“
Winfried Sobottka: „Das wäre zumindest in meinem Falle Wahnsinn. Solche Sachen kann ich nur mit Papier, Bleistift und gutem Radier- gummi effizient programmieren. Auch den Umbau der Textverarbeitung kann ich nur effizient bewältigen, wenn ich das Programm komplett ausdrucke. Wer Abläufe programmieren will, die nicht ganz so einfach sind, kann nicht alles einfach in die Tasten hacken, wenn er gute Ergebnisse möglichst schnell erzielen will.“
Belljangler:“Wie soll das Anlegen oder Ändern einer Untertabelle aufgerufen werden?“
Winfried Sobottka: „Ich stelle mir das so vor: Im Overlay einer Seite oder einer Untertabelle gibt man an entsprechender Stelle einen Steuercode ein, z.B. $tab1$ für die erste Tabelle der Seite. Dann geht man mit dem Cursor auf dieses $tab1$, und drückt eine dafür vorgesehene Funktionstaste. Es öffnet sich ein Fenster, und abgefragt wird, wie viele Zeilen und Spalten die Tabelle haben soll, wie breit sie insgesamt sein soll, welche Breite die Spalten haben sollen, ob Überschrift oder nicht usw. Dann wird eine Tabelle für $tab1$ angelegt, falls diese noch nicht vorhanden ist. Ist sie angelegt, wird – nicht maßstabsgetreu, weil ja Textmodus – eine vereinfachte Darstellung der Tabelle ab dem Beginn des $tab1$ (automatisch) eingefügt, als ein- facher Rahmen, zum Beispiel blau unterlegt. Dann muss man in die Felder eintragen können, was man darin haben will, Text, Bilder, Untertabellen, wobei man alles als Konserven pflegen können muss. Legt man dann in den Feldern Untertabellen an, dann macht man das z.B. mit $UTAB$, muss sie anschließend von dort aus auch aufrufen können. Will man einen Text anlegen, dann macht man das z.B. mit $TEXT$, muss diesen Text dann auch aufrufen und bearbeiten können. Egal, auf welcher Hierarchieebene und in welchem Element man sich befindet – es muss zurück zur Mutter und hin zu den Kindern gehen, solange es welche gibt.“
Belljangler:“Eine Ansammlung von Tabellen und Elementverweisen als Mutter-Overlay?“
Winfried Sobottka: „Anders geht es nicht, wenn man absolute Flexi- bilität möglichst einfach erreichen will. Zugleich baut man sich so Bibliotheken auf, kann nach ein paar Projekten auf vieles Bewährtes zurückgreifen. Und in der Praxis wird es nicht allzu kompliziert werden – die Darstellungsmöglichkeiten der üblichen Bildschirme verhindern es wohl, dass irgendjemand auf die Idee kommt, Tabellen über 100 Hierachie-Ebenen zu schachteln.“ Belljangler: „Hört sich nach einem größeren Projekt an…“
Winfried Sobottka: „Wird es wohl auch sein. Entsprechend will ich schrittweise so vorgehen, dass ich mit jedem einzelnen Schritt ein spürbares Mehr an Leistung in der Tool-gestützten Seitenerstellung realisiere, dabei aber eben alle Türen offen halte.“
Belljangler: „Wenn das Overlay Deinen Wünschen gemäß vollendet ist, dann wird der Rest ein geringeres Problem sein?“
Winfried Sobottka: „Die Umsetzung letztendlicher Elemente wird immer nach dem selben Schema laufen: Daten aus Konserven holen und an passender Stelle in die Programmdatei schreiben, stets nach dem selben Schema. Die Tabellen wiederum sind letztlich nur Klammern, die weitere Klammern (Tabellen) oder letztendliche Elemente umschließen. Man beginnt mit der ersten linken Klammer oben und hört mit der letzten rechten Klammer unten auf:
Start Obertabelle
Startzeile Obertabelle
Start Feld 1 Obertabelle
Startzeile Untertabelle 1
Feldinhalt 1 Untertabelle 1
………….
Abschluss Untertabelle 1
Abschluss Feld 1 Obertabelle 1
………….
Abschluss erste Zeile Obertabelle
Wenn man sich den nötigen Ablauf sauber aufschreibt und dann danach programmiert, dann ist es nicht halb so schlimm, wie es einem scheinen mag, solange man das Problem nicht durchdacht hat. Ohne Papier, Bleistift und Radiergummi könnte mich an solche und viele andere Dinge allerdings nicht heran wagen. Man braucht in solchen Fällen schon einen Programmablaufplan, bevor man anfängt, Programmcode zu schreiben. Im Grunde kann jeder HTML-Program- mierer die Umsetzung verschachtelter Tabellen programmieren, und er tut es immer nach dem selben Schema. Das Schema sitzt ihm im Blut, und wenn er es als Ablaufsplan formuliert, dann kann er im Grunde auch ein Tool schreiben, das ihm diese Arbeiten zukünftig abnimmt. Was ich an der Stelle vorhabe, ist nicht mehr als das, und es ist sicherlich nicht schwieriger, als die Berechnung beliebiger mathematischer Ausdrücke aus einem String heraus zu programmie- ren, wobei bis zu 99 Klammern, Grundrechenarten und Potenzieren zugelassen sind: In beiden Fällen ist auf letztendliche Elemente hinunter zu gehen, in beiden Fällen wird der Ablauf im Grunde nach einem Klammersystem gesteuert, das links mit einer öffnenden Klammer be- ginnt und rechts mit einer schließenden Klammer endet.“
Belljangler: „Keine Restriktionen des geplanten Tool-Systems?“
Winfried Sobottka: „Umfließender Text wird problematisch, weil der im Grunde nur Wysiwyg im Grafikmodus oder unter Verzicht auf Worttrennung gestaltet werden kann. Da müsste also Einzelfall bezogen „Hand angelegt“ werden. Mit dieser Restriktion werde ich mich allerdings in bester Gesellschaft befinden: Bisher kenne ich keinen Pagemaker für HTML-Seiten, der das Problem umfließenden Textes wirklich toll gelöst hätte.“
Dipl.-Kfm. Winfried Sobottka
Neueste Kommentare