Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausgabe im Terminalfenster



lokicall
08-03-2006, 23:07
Hallo,
ich habe folgendes Problem. Wenn ich ein selbst geschriebenes Pascal(FP) Prog. starte im Terminalfenster, dann kommt keine Ausgabe. Ein Beispiel


begin
writeln('Hallo');
end.
Wenn ich aber das Programm im Shell bzw. Win. starte gehts. Ist das normal?
Oder liegt ein Fehler in meinen System vor?

xor
09-03-2006, 01:51
units, compiler parameter, version? was passiert, wenn du explizit nach stdout schreibst?

lokicall
09-03-2006, 08:59
Mist, mein Fehler. Muss wohl die Programme mit der Option -Aelf kompilieren, dann gehts. Danke

lokicall
09-03-2006, 09:02
Okay zweites Problem. Wieso funktioniert der Code nicht unter Linux!


USES crt;
VAR
abc:STRING;
ch:CHAR;
n,x,z:BYTE;
BEGIN
abc:='abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqr stuvwxyz';
clrscr;
REPEAT
REPEAT
ch:=ReadKey;
UNTIL ((ord(ch)>96) AND (ord(ch)<123))OR(ch=#27)OR(ch=#13);
IF ch=#27 THEN exit;
x:=wherex;
FOR n:=1 TO 25 DO
BEGIN
IF (wherex>=76)OR(ch=#13) THEN
BEGIN
ClrScr;
x:=1;
END;
gotoxy(x,1);write(ch);
gotoxy(x,n+1);
z:=Ord(ch);
IF n=25 THEN TextColor(red);
write(abc[z-96+n]);
IF n=25 THEN TextColor(7);
END;
UNTIL false;
END.

Boron
09-03-2006, 10:11
In C gibt es das häufige Problem, dass Leute die Header Datei conio.h unter Linux verwenden wollen. Die gibt es da nicht.
Vielleicht gibt es diese crt in "USES crt;" unter Linux nicht?

Ich geb zu, dass ich keine Ahnung von Pascal habe, aber du solltest schon eventuelle Compilerfehler mitteilen.

RHBaum
09-03-2006, 10:15
Also vor tausenden von jahren hab ich mal was mit Pascal gemacht ... turbo Pascal 6.0 .....

Das einzigste was mir aufn Blick auffaellt, ist die crt unit.... Gibts sowas unter Linux ?
die CRT hat doch unter dos auf den Bildschirmspeicher direkt geschrieben, bei nem Terminal unter Linux sieht da alles bisserl ganz anders aus ^^ Gibts da ne emulation ?

Ciao ....

Edit: ups boron war schneller ...

Joghurt
09-03-2006, 14:00
Wenngleich ich deiner Signatur nicht zustimme (und ich habe früher viel mit Pascal gemacht; ein paar Dinge gehen dort einfach nicht, die in C gehen), schau dir mal http://www.lazarus.freepascal.org/ an

lokicall
09-03-2006, 16:14
Das merkwürdige ist ja, das die Programme ohne XServer gestartet im Shell funktionieren, nur bei X in Terminalfenster nicht.
PS.Die Signatur von PASCAL/DELPHI zu C,C++ nicht andersrum. Andersrum wäre es ein Rückschritt.

Nach zwei Stunden schuften hab ich endlich die passendes C Version hingekriegt.

#include <ncurses.h>

//CAESAR CHIFFREN
#define ESC 27

int main()
{
char *abc="abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx yz";
int ch;
char n,z;


int x=0,y;

initscr();
noecho();
do
{
do
{
ch=getch();
}while( !((ch>='a' && ch<='z') || ch==ESC));
if(ch!=ESC)
{
getyx(stdscr,y,x);
for(n=0;n<26;n++)
{
mvaddch(y+n,x,abc[ch-96+n]);
refresh();
}
getyx(stdscr,y,x);
move(0,x);
refresh();

}
}while(ch!=ESC);
echo();
endwin();
}

gorba
10-03-2006, 11:14
wunderschöne formatierung!

Ich hab echt noch nie was in pascal gemacht. was bringt die sprache für vorteile?

lokicall
10-03-2006, 11:39
Vor allem bessere Stringverarbeitung und klare Strukturen im Programmcode. Besonders geeignet für Anfänger. Nur für OOP ist die Sprache eher ungeeignet. Und in Linux gibts merkwürdigerweise Unterschiede zwischen Terminaemulation( xterm) und SHELL.:confused:

gorba
10-03-2006, 13:24
hehe. hängt das nicht von den verwendeten includes ab? evt. Unix/Linux unterschiede?

also is die sprache eigentlich nix anderes als ein schonender weg c zu lernen?

lokicall
11-03-2006, 19:09
Zwecks update von xorg7 hab ich mal Linux neu draufgezogen. Jetzt läuft das FP Programm auch im Terminal.

RHBaum
13-03-2006, 10:42
Und in Linux gibts merkwürdigerweise Unterschiede zwischen Terminaemulation( xterm) und SHELL
Sollte es auch ^^ eine shell ist dein kommandointerpreter ^^
ein Terminal / Terminalemulation (xterm) ist ein programm was dir ne umgebung zur verfuegung stellt wo deine Shell drin zum laufen bekommst ^^

Was du meinst, ist das es unterschiede zu den consolen (Standard terminals unter Linux) und den Terminal emulatoren unter X gibt ...

Der unterschied kann sein, das du bei ner normalen console direkt ueber vga / oder svga rankommst, das geht bei ner terminal emulation nimmer. Der zugriff auf terminals ist aber standardisiert ... ok gibt mehrere standards .... wenn sowohl unter der console als auch unter terminal emulatoren laufen soll, wirst nicht umhin kommen und dich auf die terminal-befehle zu beschraenken ....

aber zum glueck gibts ja bibs die dir da unter die arme greifen ... ncurses z.b.

Ciao ...

lokicall
14-03-2006, 23:34
OKAY, hab den Unterschied zw. Shell und Termianlemulation verstanden. Jetzt stimmts

RHBaum
16-03-2006, 16:09
OKAY, hab den Unterschied zw. Terminal und Termianlemulation verstanden.
Ja?
ich denk aber du meinst eher den unterschied zwischen Shell und Terminal/Terminalemulation! ^^

Ciao ...