Zeile für Zeile erfassen

15/09/2008 - 11:21 von Eric March | Report spam
Moin, Moin!

Meine Aufgabe sieht so aus:
Eine DOS-Software soll schön auf 80x25 einen "größeren" Text
darstellen. Dieser Text leidet unter dem Problem, dass er ein einziger
langer String ist bei dem Leerzeichen erforderlich sind einen
Zeilen-Umbruch am Bildrand zu erreichen.
Zwecks Editieren soll aber (ein) WIN(-Tool) benutzt werden. WORD
scheitert aber klàglich am Leerzeichen. Z.B. «…4567890·Region:…» (eine
Hilfstitelzeile für die Spalten und eine optische Folgezeile bei der das
erste Wort um Eins eingerückt ist) wird entweder am Schirm zu
«…4567890·|Region:…» oder «…456789|0·Region:…» umbrochen. Das macht ein
Editieren einfach unmöglich.
Andere Editoren kriegen die Kurve auch nicht, und EDIT z.B. krankt an
den beiden Seitenlinien die nur 78 Zeilen sichtbar (!) darzustellen
erlauben.

Mein Plan:
Das Problem für mich arbeiten lassen und doch mit Zeilenumbrüchen
einzelne logische Absàtze zu erzeugen die ich nun gerne per VBA
(sprichwörtlich) Zeile für Zeile (wortwörtlich Absatz für Absatz) in
einen Endlosstring verwandeln möchte.
Wie erfasse ich nun aber Zeile für Zeile, Pardon: Absatz für Absatz,
um denselben in einer Variable auf Lànge zu trimmen und (wird wohl
besser so sein) in einer anderen zu sammeln um dann diese unten auf dem
Blatt auf dem es sich abspielt als Absatz mit passenden (respektive eben
fehlenden) Leerzeichen abzulegen?
Oder ich spare mir selbst das und kopiere den neuen Bandwurmabsatz
direkt in die Zwischenablage.

Frage:
Wie erfasse ich aslo auf meinem Blatt Absatz für Absatz um denselben
in meine Aktionsvariable zu bekommen? (Wenn die zu lang ist -
ausgelassene Absatzenden… - kriege ich das schon gebacken.)
Oder kennt jemand einen Editor der das schon von Haus aus richtig macht?


Eric March

Kenne die Vergangenheit. In der Unwissenheit über die Vergangenheit
liegt das Verderben der Zukunft.
"Die Geschichte ist der beste Lehrmeister - mit den unaufmerksamsten
Schülern." Indira Gandhi
 

Lesen sie die antworten

#1 Frank Müller
16/09/2008 - 02:10 | Warnen spam
Hallo Eric,

Meine Aufgabe sieht so aus:
Eine DOS-Software soll schön auf 80x25 einen "größeren" Text
darstellen. Dieser Text leidet unter dem Problem, dass er ein einziger
langer String ist bei dem Leerzeichen erforderlich sind einen
Zeilen-Umbruch am Bildrand zu erreichen.



Wo kommt der Text/String denn her?
Hat der selbst keine Leerzeichen sondern nur Zeilenschaltungen?

Zwecks Editieren soll aber (ein) WIN(-Tool) benutzt werden. WORD
scheitert aber klàglich am Leerzeichen. Z.B. «…4567890·Region:…» (eine
Hilfstitelzeile für die Spalten und eine optische Folgezeile bei der
das erste Wort um Eins eingerückt ist) wird entweder am Schirm zu
«…4567890·|Region:…» oder «…456789|0·Region:…» umbrochen. Das macht
ein Editieren einfach unmöglich.



Ok also sind Leerzeichen im Text vorhanden. Wo wird denn der
Umbruch so am Schirm dargestellt wie du es beschreibst?
In der DOS Software oder unter dem Windows Tool?

Dass der Zeilenumbruch zwischen der 9 und der 0 ist,
ist schon sehr seltsam, das kann ich nicht nachvollziehen.

Ohne dass jetzt genau verstanden zu haben wo das Problem
liegt würde ich da auf die Schnelle so dran gehen.

Den gesamten String einlesen in eine Variable,
Diese zuerst auf VbCrLf splitten, damit du die "Absàtze"
hast. Dann jedes Element des dadurch entstandenen Arrays
normals auf das Leerzeichen splitten.

Und dann per Schleife über jedes Array, zàhlen
wie viele Zeichen das Element hat, schauen, ob es
nicht größer als 80 ist, wenn doch, ein Element
zurück. Das bis dahin dann in eine neue Variable
schreiben, weiter in den Arrays bis zum Ende
und ganz am Schluss alles wieder speichern.

So hast du die Garantie, dass es pro Zeile nicht
mehr als 80 Zeichen sind und auch kein Wort
unterbrochen wird. Wenn du in die neue
Variable schreibst kannst du jeweils
mit Trim führende und abschliessende Leerzeichen
auch noch unterbinden.

Eine kleine Beispieldatei wàre aber nicht schlecht
um sich das mal ansehen zu können. Ich habe
hier sogar noch DOS 6.22 laufen, könnte mir das
auch da mal ansehen auf einem Testrechner.

Gruß,
Frank

Ähnliche fragen