Write- & Readln nur in Console Mode möglich?

Für Fragen von Einsteigern und Programmieranfängern...
Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Write- & Readln nur in Console Mode möglich?

Beitrag von Marc »

Hallo

Viele Beispielprogramme verwenden die Befehle Readln und Writeln. Wie es scheint funktionieren diese aber nur in der Konsole?
Ist das korrekt, oder gibt es in einer GUI Applikation eine einfach Möglichkeit ein Fenster (Konsole) für solche Operationen zu öffnen?

Danke zum Voraus.
Good code comes from experience, experience comes from bad code.

itjump
Beiträge: 179
Registriert: Do 13. Okt 2016, 18:35
Wohnort: Winnenden

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von itjump »

Du kannst aus bestimmten Grafischen Elementen den String auslesen und manipulieren. Bei einem Button kann das so aussehen:
Als erstes must du einen Button im Designer anlegen, dieser hat den Namen "button1", wenn du Ihn nicht änderst. Dann machst du einen Doppelklick auf den Button im Designer, wodurch ein ON_Click_Event angelegt wird. In dieses schreibt man dann, um den Text des Buttons zu verändern:

Code: Alles auswählen

button1.Text := "Anderer Text";

Falls du den Inhalt eines Buttons in einen String einlesen musst, funktioniert das so:
Du musst den String initiieren und dann so den Text des Buttons darin speichern:

Code: Alles auswählen

s1 := button1.Text; // Das liest den Button Text in den String
 

Falls noch Fragen sind, ich helfe gerne, notfalls auch über Skype.

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von Marc »

Hallo ITJump

Danke für die schnelle Antwort. Ich glaube aber das Du auf eine andere Frage geantwortet hast?
Oder habe ich meine Frage unglücklich formuliert?
Good code comes from experience, experience comes from bad code.

itjump
Beiträge: 179
Registriert: Do 13. Okt 2016, 18:35
Wohnort: Winnenden

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von itjump »

Ich habe auf deine Frage geantwortet, wahrscheinlich aber falsch Verstanden wie es aussieht. Sorry, dann verstehe ich nicht, was du mit der Frage meinst. Entschuldige, falls das jetzt irgendwie komisch war

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

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von wp_xyz »

Ich nehme an, die bist unter Windows: Dann gehe zu "Projekte Einstellungen" > "Compiler-Einstellungen" > "Konfiguration und Ziele": Häkchen vor Win32-GUI-Anwendung entfernen.

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von compmgmt »

Unter Windows kannst du mit AllocConsole eine Konsole für deine Anwendung hervorrufen.

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von Marc »

Ja kein Problem und danke für die Mühe.. Bin ja wirklich der Anfänger. Auch im richtige Fragen stellen.

Ich suche Beispielcode um Lazarus zu lernen. Also GUI Anwendung mit Buttons, Labels usw. Graphische Oberfläche eben, nicht Textmodus (Konsole).

Viele Beispiele die ich finde verwenden die Anweisungen 'writeln' oder 'readln'. Zum Beispiel auch um Files zu lesen oder schreiben. Diese Anweisungen fünktionieren aber nur wenn ich ein Programm für die Konsole schreibe.
In einer GUI Oberfläche gibts eine Fehlermeldung, wahrscheinlich weil ja nicht definiert ist wohin geschrieben werden soll?

Die Frage ist nun, soll man solche Anweisungen (in einer GUI) einfach nicht verwenden, oder lässt sich irgendwie einfach so eine Konsole öffnen?

Hoffe das das verständlicher ist?
Good code comes from experience, experience comes from bad code.

itjump
Beiträge: 179
Registriert: Do 13. Okt 2016, 18:35
Wohnort: Winnenden

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von itjump »

Marc hat geschrieben:Ja kein Problem und danke für die Mühe.. Bin ja wirklich der Anfänger. Auch im richtige Fragen stellen.

Ich suche Beispielcode um Lazarus zu lernen. Also GUI Anwendung mit Buttons, Labels usw. Graphische Oberfläche eben, nicht Textmodus (Konsole).

Viele Beispiele die ich finde verwenden die Anweisungen 'writeln' oder 'readln'. Zum Beispiel auch um Files zu lesen oder schreiben. Diese Anweisungen fünktionieren aber nur wenn ich ein Programm für die Konsole schreibe.
In einer GUI Oberfläche gibts eine Fehlermeldung, wahrscheinlich weil ja nicht definiert ist wohin geschrieben werden soll?

Die Frage ist nun, soll man solche Anweisungen (in einer GUI) einfach nicht verwenden, oder lässt sich irgendwie einfach so eine Konsole öffnen?

Hoffe das das verständlicher ist?

Wenn du wirklich Anfänger bist, reicht es zu wissen, das solche Befehle bei GUI Programmen nicht benutzt werden, alles andere würde zu weit gehen. Mein Beispielcode oben funktioniert. Zu Lazarus findest du leider vermutlich recht wenig Tutorials, da Pascal eine sterbende Sprachen ist (Bitte kein Flame, das ist einfach so, auch wenn es schade ist). Wenn dann würde ich an deiner stelle nach Delphi Tutorials schauen, da diese in 99% der fälle auch bei Lazarus anwendbar sind.

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von compmgmt »

Ich würde solche Anweisungen nicht nutzen, falls du aber doch aus irgendeinem Grund unbedingt eine Konsole benötigen solltest, kannst du (unter Windows) AllocConsole verwenden.

EDIT: Da war itjump schneller als ich

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von compmgmt »

itjump hat geschrieben:Mein Beispielcode oben funktioniert.

Fast. Es ist Button1.Caption statt Button1.Text, aber sonst ja

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

itjump
Beiträge: 179
Registriert: Do 13. Okt 2016, 18:35
Wohnort: Winnenden

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von itjump »

compmgmt hat geschrieben:
itjump hat geschrieben:Mein Beispielcode oben funktioniert.

Fast. Es ist Button1.Caption statt Button1.Text, aber sonst ja

Ja, wenn man so viele Programmiersprachen beherrscht wie ich (ich glaube es sind momentan 10), dann verwechselt man mal das eine oder andere

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von compmgmt »

itjump hat geschrieben:Ja, wenn man so viele Programmiersprachen beherrscht wie ich (ich glaube es sind momentan 10), dann verwechselt man mal das eine oder andere

Kenn ich auch. Ich schreib unter C# meistens Button.Caption statt Button.Text ^^.

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

itjump
Beiträge: 179
Registriert: Do 13. Okt 2016, 18:35
Wohnort: Winnenden

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von itjump »

compmgmt hat geschrieben:
itjump hat geschrieben:Ja, wenn man so viele Programmiersprachen beherrscht wie ich (ich glaube es sind momentan 10), dann verwechselt man mal das eine oder andere

Kenn ich auch. Ich schreib unter C# meistens Button.Caption statt Button.Text ^^.

Ja, ich mache gerade viel aus dem Studium, weshalb ich eher an C und C++ hänge, weil das in meinem Studium dran kommen wird. Die Mathematischen Funktionen sind dafür sehr wichtig, weshalb jemand, der nicht in die Oberstufe geht, es nicht schafft, diese meist nur schlecht verstehen kann (Keine Ahnung, welchen Bildungsgang du hast). GUI ist da eher die Spitze des Eisberges

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

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von Mathias »

Viele Beispiele die ich finde verwenden die Anweisungen 'writeln' oder 'readln'. Zum Beispiel auch um Files zu lesen oder schreiben. Diese Anweisungen fünktionieren aber nur wenn ich ein Programm für die Konsole schreibe.

Für die Files funktioniert WriteLn und ReadLn auch mit einer GUI-Anwendung. Nur gibt es dafür meisten etwas modernes, Ausnahmen vorbehalten.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Write- & Readln nur in Console Mode möglich?

Beitrag von Marc »

Hallo, ja genau das wollte ich wissen. Ihr verwendet diese Befehle nicht. Weil eben nur für Konsole gedacht.
Das Häkchen vor Win32-GUI-Anwendung entfernen, hat leider nichts gebracht.
Ich möchte nacher auch das mein Code auch auf Linux läuft, desshalb lasse ich das mal mit AllocConsole.

Es ist wirklich nicht einfach vernünftigen Code zu finden. Der für Anfänger verständlich genug ist.
Das meiste bezieht sich ja auf Free Pascal. Oder dann sind es nur Teile eines Programms.

Das die Sprache sterbend ist stört mich nicht, das sind wir ja alle. :-)
Solange da noch daran entwickelt wird, ist es nicht tot.

Vieleicht ist es einfach etwas schwierig sich da einzuarbeiten.
Brauche die meiste Zeit beim suchen nach vernünftigem Code.
Aber ja, vieleicht muss ich da eher in Richtung Delphi suchen.

Danke an alle Antwortenden ;-)
Good code comes from experience, experience comes from bad code.

Antworten