Wie kann man mehrzeilige Texte im Programm ablegen?!

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Wie kann man mehrzeilige Texte im Programm ablegen?!

Beitrag von Mathias »

Da ich eh nur unter Windows dinge herbeizauber, geh ich auch über den komfortablen Resourcen weg.
Nichts desto trotz war ich schon ein paar mal gezwungen es als include datei zu haben.
Hier ist meine sehr simple variante plus eine methode um das ganze auch wieder lesbar zu bekommen über eine Stringliste.
So ein ähnliches Geflicke habe ich auch schon gemacht, Ein Text-Datei mit einem Hilfs-Programm in eine Zeichen-Kette umgewandelt, das Ergebnis in der in Include-Datei sah dann etwa so aus:

Code: Alles auswählen

const
  VertexShader = #xx#xx#xx#xx.....;
Aber wie schon gesagt, in meinen Augen ein Gewürge.
Auch das mit den Ressourcen ist ein Gewürge.

Wie schon weiter oben erwähnt, wäre sowas die sauberste Lösung.

Code: Alles auswählen

const
  VertexShader ={$includestring text.txt}; 
Kann man Ressourcen auch ohne LCL verwenden ?
Auch in einer Package, habe ich es nicht hingekriegt.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
KodeZwerg
Beiträge: 103
Registriert: Mo 6. Feb 2023, 11:04

Re: Wie kann man mehrzeilige Texte im Programm ablegen?!

Beitrag von KodeZwerg »

Ich verstehe Dich leider nur zu 50% :oops:

Code: Alles auswählen

{$I '.\include.inc'}
Das ist der Pascal Befehl um eine Datei reinzulinken, über meine Methode gelangst Du abschließend wieder an den Text.
Das was Du gerne möchtest gibt es (noch) nicht.
Da der compiler quelloffen ist, kannst Du das was fehlt nachrüsten.
Zuletzt geändert von KodeZwerg am Sa 39. Okt 6043, 29:87, insgesamt 43-mal geändert.

Warf
Beiträge: 1913
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Wie kann man mehrzeilige Texte im Programm ablegen?!

Beitrag von Warf »

Was man auch machen kann ist sich einfach ein linebreak makro zu definieren:

Code: Alles auswählen

{$Macro On}
{$Define LN:= + LineEnding +}

const
  LongString1 = 
    'Hello Line 1'LN
    'Hello Line 2'LN
    'Hello Line 3';
Nicht unbedingt der sauberste weg, aber wenns schnell gehen muss und man keine lust hat sich mit Resourcedateien rumzuschlagen geht das so super

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2641
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Wie kann man mehrzeilige Texte im Programm ablegen?!

Beitrag von m.fuchs »

Was ist da denn der Vorteil,? Einführung eines Makros heißt ja immer auch, dass ein unbekannter Befehl nachgeschlagen werden muss. Und lesbarer als mit + LineEnding ist es ja auch nicht.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Warf
Beiträge: 1913
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Wie kann man mehrzeilige Texte im Programm ablegen?!

Beitrag von Warf »

Das sollte man natürlich nicht in einer Datei mit noch anderem Code haben, Makros können sonst schnell gefährlich werden. Wenn dann hab ich eine Datei die nur für Multiline String konstanten ist in der dann das Makro definiert.

Denn wenn Mann z.b. für help pages für ein Konsolenprogramm schreibt mit seitenweise Text lappert sich "+ LineEnding +" schon an

Antworten