TextDatei als String compilieren

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Mathias
Beiträge: 6938
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

TextDatei als String compilieren

Beitrag von Mathias »

Kann man eine Text-Datei direkt mit compilieren ?

Code: Alles auswählen

  Label1.Caption:={$i test.txt};
Wen nur eine Zeile in test.txt steht geht dies.

Code: Alles auswählen

'Das ist ein Text'  
So geht es auch

Code: Alles auswählen

'Das ist ein Text'#13#10 +
'Das ist ein Text'#13#10 +
'Das ist ein Text'#13#10 +
'Das ist ein Text'  
Schön währe wan wen man es so machen könnte:

Code: Alles auswählen

Das ist ein Text
Das ist ein Text
Das ist ein Text
Das ist ein Text  
Man könnte eine Umweg über ein verstecktes TMemo machen, aber dann ist man an Formular-Anwendungen gebunden.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10900
Registriert: Mo 11. Sep 2006, 19:01

Re: TextDatei als String compilieren

Beitrag von theo »

Darf man fragen wozu?
Man kann Ressourcen verwenden, wenn man das unbedingt einkompiliert haben will: http://wiki.lazarus.freepascal.org/Lazarus_Resources

Allerdings kann man Text ja auch einfach in den Quelltext schreiben oder von Datei laden.
Wozu also der Umstand?

Mathias
Beiträge: 6938
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: TextDatei als String compilieren

Beitrag von Mathias »

Weil ich solch eine Shader-Datei direkt im Code haben will. Somit müsste man nicht die Shader-Dateien mit der Exe mitliefern.

Code: Alles auswählen

#version 330
in vec3 inPos;
in vec4 inColor;
 
out vec4 Color;
 
void main(void)
{
  gl_Position = vec4(inPos, 1.0);
  Color = inColor;
}                
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
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: TextDatei als String compilieren

Beitrag von m.fuchs »

Mathias hat geschrieben:Weil ich solch eine Shader-Datei direkt im Code haben will. Somit müsste man nicht die Shader-Dateien mit der Exe mitliefern.
Dann solltest du Resourcen benutzen, wie theo vorgeschlagen hat.

Alternativ (wenn die Datei nicht zu groß ist) kannst du dir auch eine String-Konstante einbinden. Ich hab zum Beispiel ein Tool, welches Konstanten automatisch aus (auch mehrzeiligem) Text erstellt: http://michael-fuchs.net/rubriken/edv/tools/fcgt/
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Mathias
Beiträge: 6938
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: TextDatei als String compilieren

Beitrag von Mathias »

Etwas direktes gibt es anscheinend nicht.

Ich werde wohl auf Resourcen benutzen.

Trotzdem danke.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
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: TextDatei als String compilieren

Beitrag von m.fuchs »

Wie soll es denn direkter sein, als Stringkonstanten oder Ressourcen?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Mathias
Beiträge: 6938
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: TextDatei als String compilieren

Beitrag von Mathias »

m.fuchs hat geschrieben:Wie soll es denn direkter sein, als Stringkonstanten oder Ressourcen?
Shader-Datei editieren, F9, los. Aber so das die Dateien in die Exe compiliert werden.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: TextDatei als String compilieren

Beitrag von Socke »

m.fuchs hat geschrieben:Wie soll es denn direkter sein, als Stringkonstanten oder Ressourcen?
Andere Sprachen unterstützen solche Konstrukte (Heredoc) Pascal jedoch nicht.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
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: TextDatei als String compilieren

Beitrag von m.fuchs »

Mathias hat geschrieben:
m.fuchs hat geschrieben:Wie soll es denn direkter sein, als Stringkonstanten oder Ressourcen?
Shader-Datei editieren, F9, los. Aber so das die Dateien in die Exe compiliert werden.
Schau dir mal Projekt > Projekteinstellungen > Compiler-Kommandos an. Dort kannst du einen Befehl eintragen, der vor dem Kompiliervorgang aufgerufen wird. Pack dort einfach den Auruf von lazres hinein und schon läuft es so wie gewünscht.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Mathias
Beiträge: 6938
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: TextDatei als String compilieren

Beitrag von Mathias »

Schau dir mal Projekt > Projekteinstellungen > Compiler-Kommandos an. Dort kannst du einen Befehl eintragen, der vor dem Kompiliervorgang aufgerufen wird. Pack dort einfach den Auruf von lazres hinein und schon läuft es so wie gewünscht.
Ich habe ein kleines Programm geschrieben welches aus der Shader-Datei eine *.Inc erzeugt, welche dann die Zusätze '+#13#10, etc . enthält.
Soweit so gut.

Zuerst wollte ich bei Compiler-Kommandos ein *.bat übergeben, geht leider nicht, auch Parameter hinter der Exe gehen nicht.
Schade, ich wollte meinem Hilfsprogramm die Namen der Shader-Dateien übergeben.
Somit muss ich die Pfade und Shader-Dateien mit in die Exe compilieren, dadurch ist es natürlich unflexibel.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
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: TextDatei als String compilieren

Beitrag von m.fuchs »

Hm, ich sehe mit Lazarus 1.2 keine Probleme wenn ich eine .bat eintrage.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: TextDatei als String compilieren

Beitrag von mschnell »

Socke hat geschrieben:Andere Sprachen unterstützen solche Konstrukte Pascal jedoch nicht.
Man könnte (falls das überhaupt nötig ist) mit einem Editor die Zeilenumbrüche zu irgendeinem nicht verwendeten Zeichen konvertieren und die Datei mit {$I includen (falls keine Anfügrungszeichen drin sind).

-MNichael

Mathias
Beiträge: 6938
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: TextDatei als String compilieren

Beitrag von Mathias »

m.fuchs hat geschrieben:Hm, ich sehe mit Lazarus 1.2 keine Probleme wenn ich eine .bat eintrage.
Jetzt geht es, ich musste die .bat ein bisschen abändern. Die bat hat mein Tool nicht gefunden, ich dachte mit der Fehlermeldung von Lazarus, er würde die bat nicht finden. In der bat musste ich zuerst mit cd \...\.... in den richtigen Ordner wechseln.
Man könnte (falls das überhaupt nötig ist) mit einem Editor die Zeilenumbrüche zu irgendeinem nicht verwendeten Zeichen konvertieren und die Datei mit {$I includen (falls keine Anfügrungszeichen drin sind)
Ist viel zu aufwändig, der Sinn der Sache ist, das ich die Shader-Datei direkt im Editor von Lazarus habe.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten