Rückkehr aus Grafikmodus

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
hellewe
Beiträge: 5
Registriert: So 21. Okt 2012, 20:42

Rückkehr aus Grafikmodus

Beitrag von hellewe »

Hallo,

ich habe ein kleines Grafikprogram erstellt.
Der Grafikteil selber funktioniert einwandfrei und ist nur ein Beispiel.
Wenn ich aber anschließend wieder in den Textmodus
zurückkehren will (hinter "Closegraph") funktioniert es nicht.

Anbei das kurze Programm:

Code: Alles auswählen

Program Grafik;
Uses crt,graph;
VAR  graphmode,graphdriver  : SmallInt;
VAR  x                                   : Real;
 
Begin
clrscr;
Writeln ('test');
readkey;
 
graphdriver := detect;
initgraph (graphdriver, graphmode,' ');
Cleardevice;
SetBkColor(1);
Setcolor(14);
Putpixel(60,40,4);
Line(20,63,325,360);
Rectangle(50,70,70,80);
Delay(1000);
Cleardevice;
CloseGraph;
 
Restorecrtmode;
Clrscr;
Read(x);
Writeln(x);
Delay(3000);
end.
 
Was könnte der Fehler sein?

Schönen Sonntagabend noch

Werner
Zuletzt geändert von Lori am So 21. Okt 2012, 21:05, insgesamt 1-mal geändert.
Grund: Und bitte den Highlighter benutzen

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: Rückkehr aus Grafikmodus

Beitrag von mschnell »

Grafik ohne X o. ä. ?

Will das heute wirklich noch jemand ausprobieren ?

-Michael

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Rückkehr aus Grafikmodus

Beitrag von Euklid »

hellewe hat geschrieben: Was könnte der Fehler sein?
Hmmm... eigentlich sollte das mit CloseGraph geschehen sein: http://lazarus-ccr.sourceforge.net/docs ... graph.html

Vllt. ein Bug?

Cybermonkey342
Beiträge: 109
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
CPU-Target: x64
Kontaktdaten:

Re: Rückkehr aus Grafikmodus

Beitrag von Cybermonkey342 »

mschnell hat geschrieben:Grafik ohne X o. ä. ?

Will das heute wirklich noch jemand ausprobieren ?

-Michael
Also ich nicht. :)
Wenn ich evtl. etwas Werbung für meine SDL basierte Engine machen darf ... die übrigens ursprünglich als Ersatz für die Unit Graph gedacht war, aber letztlich was anderes wurde. Das einzige Problem ist halt, dass es Abhängigkeiten zu SDL, SDL_mixer und SDL_gfx gibt. Das obige Beispiel (die reine Grafik) würde in etwa so aussehen:

Code: Alles auswählen

program Grafik;
uses egslengine,sysutils;
 
BEGIN
openwindow (800,600,0,'Test'); 
background (0,0,0); //alle Farben als RGB Werte
clearscreen;
colour (255,255,0); //gelb
dot (60,40);
line (20,63,325,360);
box (50,70,70,80); //arbeitet mit absoluten Werten, also x1,y1,x2,y2
rectangle (50,70,70,80); //arbeitet mit relativen Werten, also x1,y1,x1+w,y1+h
sync;
wait (1000);
closewindow;
// etc.
END.
 
Natürlich gibt es auch Routinen für Tastaturabfrage und Input, aber das geht natürlich auch über die Console.
Mit besten Grüßen,
Cybermonkey

indianer-frank
Beiträge: 134
Registriert: So 30. Nov 2008, 21:53

Re: Rückkehr aus Grafikmodus

Beitrag von indianer-frank »

hellewe hat geschrieben:Hallo,
ich habe ein kleines Grafikprogram erstellt.
Der Grafikteil selber funktioniert einwandfrei und ist nur ein Beispiel.
Wenn ich aber anschließend wieder in den Textmodus
zurückkehren will (hinter "Closegraph") funktioniert es nicht.
Und was funktioniert bei Dir nicht? Bei mir macht das Programm, was es soll: Kompiliert mit

Code: Alles auswählen

D:\FPC260D\bin\go32v2\fpc.exe GRAFIK.PAS
Free Pascal Compiler version 2.6.0 [2011/12/30] for i386
Copyright (c) 1993-2011 by Florian Klaempfl and others
Target OS: GO32 V2 DOS extender
Compiling grafik.pas
Linking grafik.exe
29 lines compiled, 0.7 sec
und ohne Probleme ausgeführt unter Win98.

hellewe
Beiträge: 5
Registriert: So 21. Okt 2012, 20:42

Re: Rückkehr aus Grafikmodus

Beitrag von hellewe »

Hallo Cybermonkey,

zum Verständnis, zum letztenmal habe ich während meines Studiums progammiert, vor 40 Jahren.
Aus dem Internet habe ich mir lazarus geladen und aus dem Antiquariat die letzten Turbo Pascal Bücher besorgt.
Die von dir genannten units egelsengine etc. kenne ich nicht und die angegebenen Befehle in deinem Program kenn ich in TP auch nicht.
Wo gibt es denn dazu Unterlagen?
Trotzdem besten Dank.

Werner

hellewe
Beiträge: 5
Registriert: So 21. Okt 2012, 20:42

Re: Rückkehr aus Grafikmodus

Beitrag von hellewe »

Hallo Indianer-Frank

erstmal besten Dank für Deine Mühen.
Ich hab mir die aktuelle Version von Freepascal aus dem Netz geladen.
Auch damit läuft das Programm nicht.
Nach dem closegraph nimmt er das Read (x) nicht
und führt auch das write (x) nicht aus, sondern bringt
erstaunlicherweise das erste Write ('test') ein zweites Mal.

Hier der Ausdruck des compilers bzw. die Ausgabe des Programms
(den Grafikteil habe ich nicht mitkopiert, der ist hier ja auch nur ein dummy):


þ Free Pascal IDE Version 1.0.12 [2011/12/25]
þ Compiler Version 2.6.0
þ GDB Version GDB 7.2
þ Using configuration files from: C:\FPC\2.6.0\bin\i386-win32\
Running "c:\fpc\2.6.0\bin\i386-win32\grafik.exe "
test
test

Würde ja gerne beim guten alten Turbo Pascal bleiben, ich habe es vor 40 Jahren schon benutzt.
Schönen Abend noch

Werner

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: Rückkehr aus Grafikmodus

Beitrag von mschnell »

Hast Du denn wirklich einen Rechner, der keine Grafische Oberfläche zeigt ?

Wenn Doch, solltest Du besser Lazarus installieren und die Grafiken mit den heutzutage normalen Mitteln anzeigen.

-Michael

Cybermonkey342
Beiträge: 109
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
CPU-Target: x64
Kontaktdaten:

Re: Rückkehr aus Grafikmodus

Beitrag von Cybermonkey342 »

hellewe hat geschrieben:Hallo Cybermonkey,

zum Verständnis, zum letztenmal habe ich während meines Studiums progammiert, vor 40 Jahren.
Aus dem Internet habe ich mir lazarus geladen und aus dem Antiquariat die letzten Turbo Pascal Bücher besorgt.
Die von dir genannten units egelsengine etc. kenne ich nicht und die angegebenen Befehle in deinem Program kenn ich in TP auch nicht.
Wo gibt es denn dazu Unterlagen?
Trotzdem besten Dank.

Werner
Hallo, die Unit egslengine ist von mir programmiert und ist auf meiner Seite zu finden: http://www.egsl.retrogamecoding.org/ auf der Download-Seite als FreePascal source of EGSL 1.5.3. Allerdings brauchst du - je nach verwendetem Betriebssystem - noch die Vampyre Imaging Library zum kompilieren, zu finden hier: http://imaginglib.sourceforge.net/. Die Unit ist Teil von meinem Projekt EGSL, ein Lua Interpreter um (Retro-) Spiele zu programmieren, der komplett in Freepascal und die IDE in Lazarus programmiert ist. Die Unit egslengine ist eben die Grafik-, Sound- und Input-Engine dafür, kann aber natürlich vonn jedem auch in pascal genutzt werden. Als Beispiel kannst du dir ja mal das Spiel "Bubble Chain" - auf der Showcase-Seite - anschauen, das ist komplett in Pascal (ohne Lua Code) programmiert.
Mit besten Grüßen,
Cybermonkey

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Rückkehr aus Grafikmodus

Beitrag von Scotty »

Unter Linux funktioniert die Bibliothek gleich gar nicht (svgalib-1.9.25-3 und svgalib_helper aus den Quellen kompiliert und svgalib_helper geladen). vga_init (external, cdecl) liefert dann einen segmentation fault. Es kümmert sich halt keiner mehr um die Konsole. Dabei könnte man damit die volle Kontrolle über das System ohne Multithreading eines Fenstermanagers haben (runlevel S).

Cybermonkey342
Beiträge: 109
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
CPU-Target: x64
Kontaktdaten:

Re: Rückkehr aus Grafikmodus

Beitrag von Cybermonkey342 »

Scotty hat geschrieben:Unter Linux funktioniert die Bibliothek gleich gar nicht (svgalib-1.9.25-3 und svgalib_helper aus den Quellen kompiliert und svgalib_helper geladen). vga_init (external, cdecl) liefert dann einen segmentation fault. Es kümmert sich halt keiner mehr um die Konsole. Dabei könnte man damit die volle Kontrolle über das System ohne Multithreading eines Fenstermanagers haben (runlevel S).
Ja, aber das Problem ist, dass SVGALIB-Programme nur als root ausgeführt werden können, das ist halt ein potentielles Sicherheitsproblem.
Mit besten Grüßen,
Cybermonkey

hellewe
Beiträge: 5
Registriert: So 21. Okt 2012, 20:42

Re: Rückkehr aus Grafikmodus

Beitrag von hellewe »

Hallo Mschnell,

natürlich habe ich einen neuen Rechner und arbeite auch mit der Lazarus Oberfläche,
aber was sind moderne Mittel der Grafik-Darstellung und wo kann ich die downloaden?

Schönen Abend noch

Werner

Cybermonkey342
Beiträge: 109
Registriert: Sa 1. Mär 2008, 15:19
OS, Lazarus, FPC: openSUSE Leap 15.6 (FPC 3.2.2) / Windows 11 Pro (FPC 3.2.2)
CPU-Target: x64
Kontaktdaten:

Re: Rückkehr aus Grafikmodus

Beitrag von Cybermonkey342 »

hellewe hat geschrieben:Hallo Mschnell,

natürlich habe ich einen neuen Rechner und arbeite auch mit der Lazarus Oberfläche,
aber was sind moderne Mittel der Grafik-Darstellung und wo kann ich die downloaden?

Schönen Abend noch

Werner
Du kannst natürlich direkt Lazarus zur Grafikdarstellung benutzen. Da musste nix extra downloaden, geht alles mit der LCL. Hier wäre evtl. das Lazarus-Buch hilfreich, da es ein Kapitel über Grafiken enthält.
Mit besten Grüßen,
Cybermonkey

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: Rückkehr aus Grafikmodus

Beitrag von mschnell »

hellewe hat geschrieben:aber was sind moderne Mittel der Grafik-Darstellung und wo kann ich die downloaden?
Alle "normale" Sachen macht Lazarus "out of the Box" sehr ordentlich und komfortabel und Plattform-unabhängig. (z.B. mit "Canvas" Funktionen und "OnPaint" Events)

Wenn Du Spezialitäten brauchst (3D und/oder high-Performance), bietet sich SDL an (ein Zwischen-Layer, der die komfortable und Plattform-unabhängig Verwendung von Windows, X und OpenGL erlaubt).

Wenn Du ein high-Performance CAD-System erstellen willst greifst Du am besten direkt auf OpenGL zu, was Plattform-unabhämngig aber wenig komfortabel ist.

Was genau hast Du vor.

Gruß,
-Michael

Antworten