[erledigt]bei Programmstart wird immer auch ein Konsolenfenster gleichzeitig geöffnet

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
oliver2104
Beiträge: 48
Registriert: Sa 26. Dez 2020, 13:22

[erledigt]bei Programmstart wird immer auch ein Konsolenfenster gleichzeitig geöffnet

Beitrag von oliver2104 »

Hallo,
beschäftige mich gerade mit Simple Direkt Layer - SDL2 für Pascal.
damit kann man Fenster erzeugen und darin beliebige grafische Inhalte anzeigen.
Also eine grafische Anwendung ohne die LCL-Bibliothek.
Läuft soweit gut, störend ist nur das Lazarus/FPC ev. glaubt das sei eine Konsolenanwendung
und zu meinem Programm immer auch parallel die Windows Konsole (cmd.exe) startet.
Kann man das ändern ?
Zuletzt geändert von oliver2104 am Mo 29. Jul 2024, 12:44, insgesamt 1-mal geändert.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1629
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: bei Programmstart wird immer auch ein Konsolenfenster gleichzeitig geöffnet

Beitrag von corpsman »

schau mal ob in den Projekt Einstellungen unter Konfiguration und Ziele der Hacken bei "Win32 gui application" gesetzt ist ..
--
Just try it

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

Re: bei Programmstart wird immer auch ein Konsolenfenster gleichzeitig geöffnet

Beitrag von Mathias »

schau mal ob in den Projekt Einstellungen unter Konfiguration und Ziele der Hacken bei "Win32 gui application" gesetzt ist ..
Wen dies nicht hilft, kann es noch folgendes sein,

Start -> Startparameter -> Startprogramm verwenden.

Für die Entwicklungszeit mit SDL würde ich die Konsole sein lassen. Da kann man sehr einfach mit Writeln Werte ausgeben.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

oliver2104
Beiträge: 48
Registriert: Sa 26. Dez 2020, 13:22

Re: bei Programmstart wird immer auch ein Konsolenfenster gleichzeitig geöffnet

Beitrag von oliver2104 »

Danke für die Antworten !
schau mal ob in den Projekt Einstellungen unter Konfiguration und Ziele der Hacken bei "Win32 gui application" gesetzt ist ..
Genau das wird's wahrscheinlich sein, bei mir ist der Haken nicht gesetzt.
Aber jetzt kommt gleich das nächste Problem: ich kann die Projekteinstellungen überhaupt nicht ändern.
bei jeder noch so kleinen Änderung der Projekteinstellungen kommt nach klick auf OK die Fehlermeldung:
Fehler im "Unit-Ausgabeverzeichnis":
Endlosschleife in Makros
Wert: $(ProjOutDir)
Ehrlicherweise muss ich sagen, dieses Problem hatte ich schon bei meiner alten Lazarus Version,
hab deswegen alles deinstalliert und die aktuelle Windows Version 3.4 gestern neu installiert.
Dieses Problem bleibt aber. Wo werden die Projekteinstellungen eigentlich gespeichert ?
Da die projektspezifisch sind, müsste sich das eigentlich im Source Verzeichnis befinden.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1629
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: bei Programmstart wird immer auch ein Konsolenfenster gleichzeitig geöffnet

Beitrag von corpsman »

Öffne die .lpi Datei mit einem Texteditor und suche nach den Compiler Optionen dort trägst du dann folgendes ein:

Code: Alles auswählen

<CompilerOptions>
      <Options>
        <Win32>
          <GraphicApplication Value="True"/>
        </Win32>
      </Options>
    </Linking>
  </CompilerOptions>
dann sollte der Haken dran sein..
--
Just try it

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

Re: bei Programmstart wird immer auch ein Konsolenfenster gleichzeitig geöffnet

Beitrag von Mathias »

Aber jetzt kommt gleich das nächste Problem: ich kann die Projekteinstellungen überhaupt nicht ändern.
bei jeder noch so kleinen Änderung der Projekteinstellungen kommt nach klick auf OK die Fehlermeldung:
Was passiert beim erstellen eines neuen Projektes ?
Das gleiche Problem ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

oliver2104
Beiträge: 48
Registriert: Sa 26. Dez 2020, 13:22

Re: bei Programmstart wird immer auch ein Konsolenfenster gleichzeitig geöffnet

Beitrag von oliver2104 »

Vielen Dank, ihr habt mir schon weiter geholfen !
mein SDL-Programm besteht nur aus einer Datei -> sdl_test.pas
(braucht natürlich auch die SDL Runtime *.dll's und den Pfad zu den SDL Units)
In der Kommandozeile lässt sich das gut kompilieren ( option -WG macht das gleiche wie das Häkchen setzen)

Code: Alles auswählen

> fpc -WG sdl_test.pas
Nacher hab ich ein sdl_test.exe, welches als grafische Anwendung startet.

Unter Lazarus wär das natürlich bequemer, keine Kommandozeile, einfach auf Starten klicken.
Allerdings benötigt und erstellt Lazarus immer auch die Projektdateien *.lpi und *lps
Die dürfen aber nicht den gleichen Namen wie das eigentliche Programm haben.
z.b. sdl_test.lpi, sdl_test.lps und sdl_test.pas vertragen sich nicht.
Dann kommts anscheinend zu dieser Endlosschleife in Makros, wenn man etwas in den Compilereinstellungen ändern will.

Eines ist mir aber immer noch unklar, wenn ich ein Verzeichnis habe, das z.b. folgende Dateien enthält:

Code: Alles auswählen

>dir
  SDL2.dll
  SDL2_image.dll
  SDL2_ttf.dll
  sdl_test.pas
Was muss ich machen um mein Programm unter Lazarus zu bearbeiten ?
( Also nicht mit irgendeinem Editor und einer Kommandozeile)

wp_xyz
Beiträge: 5192
Registriert: Fr 8. Apr 2011, 09:01

Re: bei Programmstart wird immer auch ein Konsolenfenster gleichzeitig geöffnet

Beitrag von wp_xyz »

oliver2104 hat geschrieben: Sa 27. Jul 2024, 15:00 Allerdings benötigt und erstellt Lazarus immer auch die Projektdateien *.lpi und *lps
Die dürfen aber nicht den gleichen Namen wie das eigentliche Programm haben.
z.b. sdl_test.lpi, sdl_test.lps und sdl_test.pas vertragen sich nicht.
Dann kommts anscheinend zu dieser Endlosschleife in Makros, wenn man etwas in den Compilereinstellungen ändern will.
Wo hast du das denn her? Jedes Lazarus-Projekt funktioniert mir diesen Dateien. Irgendetwas ist bei dir ober-faul...
oliver2104 hat geschrieben: Sa 27. Jul 2024, 15:00 Eines ist mir aber immer noch unklar, wenn ich ein Verzeichnis habe, das z.b. folgende Dateien enthält:

Code: Alles auswählen

>dir
  SDL2.dll
  SDL2_image.dll
  SDL2_ttf.dll
  sdl_test.pas
Was muss ich machen um mein Programm unter Lazarus zu bearbeiten ?
( Also nicht mit irgendeinem Editor und einer Kommandozeile)
Zunächst lösche sdl_test.lpi, sdl_test.lps, sdl_test.res in deinem Projekt-Order, um Konflikten mit früheren Fehlversuchen aus dem Weg zu gehen. Wenn sdl_test.pas in der ersten Zeile das Schlüsselwort "program" enthält, wird es beim Öffnen in Lazarus als Programm-Datei erkannt. Da du die Datei aber auch nur "einfach so" öffnen könntest, fragt dich Lazarus , ob dafür ein Projekt (die .lpi-Datei) erstellt werden soll und präsentiert die übliche Liste der möglichen Projekt-Vorlagen. Bei einem Kommandozeilen-Programm nehme ich immer unter "Anwendungen" die Einstellung "Einfaches Programm" (damit ist auch das Häcken bei "Win32-GUI-Anwendung in den Projekt-Optionen nicht gesetzt). Das muss gehen, ich habe das schon hunderte mal gemacht...

oliver2104
Beiträge: 48
Registriert: Sa 26. Dez 2020, 13:22

Re: bei Programmstart wird immer auch ein Konsolenfenster gleichzeitig geöffnet

Beitrag von oliver2104 »

Ich glaub jetzt funktioniert es.
Mich hat verwirrt, das ein Lazarus Projekt immer so viele Dateien anlegt, darunter auch eine project.lpr. Normalerweise ist das eine eher kleine Datei, und das eigentliche Programm befindet sich z.b in unit1.pas.
Bei meinem Einfachen/Konsolen Projekt hab ich jetzt den ganzen Code gleich in die sdl_test.lpr geschrieben und die sdl_test.pas gelöscht.
Läuft jetzt einwandfrei.
(zu dieser Endlosschleife: das Problem ist anscheinend wirklich nicht sdl_test.lpi oder sdl_test.lps, sonder eine sdl_test.lpr die in ihrer Uses-Deklaration auf eine Unit sdl_test.pas verweist)
Wie auch immer, Danke euch allen für die Hilfe !

Antworten