Lieber Besucher, herzlich willkommen bei: RCLine Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Dienstag, 27. April 2004, 13:01

Brauche mal nen Turbo Pascal Spezialisten !!!!

Hi

Sitze seid gestern mit Nachbars völlig verzweifelter Tochter und wir versuchen ihr Turbo Pascal Projekt zu Ende zu bringen. Programmieren ist nicht gerade mein Steckenpferd und Mit Turo Pascal hatte ich noch gar nichts ma Hut. Hoffe hier kann einer mal ein paar Tips aushelfen.

Folgendes Problem haben wir.
Sie sollen eine Startseite machen mit 2 Punkten. Einmal Eingabe zum weiterleiten auf ein 2es Menü und einmal beenden. Das habe ich schon rausgefunden mit dem Menu. Das 2te Menü wird dann auch angezeigt.
Hier ist dann noch mal eine Auswahl mit 4 Unterpunkten. Jeder einzelne Punkt soll wiederum eine andere Bildschirm ausgabe machen.

Das Problem:

So einigermaßen habe ich das ja mit den Proceduren geschnallt. Dummerweise springt das Programm immer nur die letzte Procedure an. Also nichts mit Mehrfachauswahl.
Bin für jeden Tip zu haben.

Gruß
-Micha-

2

Dienstag, 27. April 2004, 13:21

Achso hier noch mal die komplette Beschreibung was das ganze dann machen soll:

Startseite

- Auswahl Untermenü öffnen [J]
- Auswahl Beenden des Programms [N]


Untermenü

- [1] Anzeigen von Info 1
- [2] Anzeigen von Info 2
- [3] Anzeigen von Info 3
- [4] Anzeigen von Info 4
- [5] Zurück zur Startseite

Von den Infos 1- 4 soll man dann in das Untermenü zurückspringen können.


Ich frag mich warum die solch Mist in der Schule machen. Gibs doch bestimmt besseres was man in Punkto Programmieren lernen kann. Anstatt denen VB oder so ein wenig näher zu bringen. Und dann haben die so gut wie keine Unterlagen.

Gruß
-Micha-

3

Dienstag, 27. April 2004, 13:58

wo ist denn da das Problen:

es gibt den Befehl zum Bildschirm löschen ( cls() oder so ähnlich ) und es gibt die wunderbaren writeln(). Damit lässt sich im Textmodus jedes Menu aufbauen.

Mit Einlesen der Tastatur ists doch wirklich nicht schwer zu prüfen, ob die letzte Taste ein J, ein N (und die jeweiligen j und n-Variante) ist, während es beim nächsten Untermenü eine Abfrage auf 1...5 ist.

Wozu den ganzen Schnickschnack mit eingebundenen DLLs, Callbacks... wenn es darum geht, wie man überhaupt programmiert und wie eine entsprechende Steuerung funktioniert.

Auch in C++ oder Visual Basic ists erforderlich, dass man weiß, was zu programmieren ist. Was nutzt die beste Oberfläche mit bunten Bildern, wenn die Ablaufsteuerung nicht das tut, was sie soll? (z.B. Windows oder sonstige Gates-Produkte)

4

Dienstag, 27. April 2004, 14:17

Zitat

Original von e-beaver
wo ist denn da das Problen:


:evil: :evil: Nachbars Tochter hat das als Aufgabe aufbekommen. Also muss das so oder in der Art auch laufen. :D
Ahnung hat sie keine bis gar keine, Und ich hab mir das gestern, das erste mal angesehen. Das wäre dann mein Problem.
:evil: :evil:

Mit VB komm ich ganz gut klar. Selbst als Batch Datei, bekomme ich das hin. Aber Turbo Pascal, ist halt neu für mich. Einfache Anweisungen bekomme ich ja hin. Aber als Programmier Legastheniker :evil: tu ich mich da auf die Kürze ein wenig schwer.

Wiegesagt, Das Programm funzt in seinen Einzelteilen. HAuptproblem ist der Aufruf der Proceduren. Es erscheint immer die selbe. Immer die letzte wird aufgerufen. Egal ob ich 1 oder4 auswähle.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »-Micha-« (27. April 2004, 14:22)


Albert

RCLine User

Wohnort: A-1170 Wien

Beruf: EDV-Consultant

  • Nachricht senden

5

Dienstag, 27. April 2004, 14:35

Servus Micha,
na dann laß einmal den Sourcecode rüberwachsen.
Ich schau mir den mal an.

LG
Albert Öttl
Wien

6

Dienstag, 27. April 2004, 14:53

Hi, das ist mal mein Murks, den ich heute als Programmier Legastheniker hinbekommen habe. Nicht vor Lachen untern Tisch fallen.

..........................................................

uses crt;

var thema: integer;

infos:boolean;

alter:byte;

auswahl,auswahl2 :char;

thema1: string;

(* Procedure Fussballfeld *)


procedure feld;
begin
clrscr;
writeln;
writeln;
writeln;
writeln;

writeln(' Feld');
writeln;
writeln;
writeln;
writeln;
writeln(' Dr?cke [Z] um zur Auswahl zur?ckzukehren !! ') ;



end;

(*Procedure Abmessungen*)

procedure size;
begin
clrscr;
writeln;
writeln;
writeln;
writeln;

writeln(' GrӇe');
writeln;
writeln;
writeln;
writeln;

end;


(*Procedure Abmessungen*)

procedure option;
begin
clrscr;
writeln;
writeln;
writeln;
writeln;

writeln(' Optionen');
writeln;
writeln;
writeln;
writeln;

end;


(* Hauptprogramm*)

begin

clrscr;
writeln(' Das Fussball Info Programm');
writeln(' **************************');
writeln;
writeln;
writeln;
writeln;
writeln(' Dr?cke die entsprechenden Buchstaben f?r die Auswahl ');
writeln;
writeln;
writeln;
writeln(' [J] Ja mehr Infos bitte !!');
writeln;
writeln;
writeln;
writeln(' [N] N” lieber Pause machen !!');
writeln;
writeln;

auswahl:=upcase(readkey); {upcase(readkey) bewirkt, dass der eingelesene}

if auswahl='J' then infos:=false;{Buchstabe in große umgewandelt wird}

if auswahl='N' then infos:=true;

if (auswahl<>'J') then begin

if (auswahl='N') then halt;

(* writeln(' Bitte nur J f?r JA oder N f?r NEIN eingeben !!! '); *)


readln;

halt; {beendet das Programm}
end;

(*Auswahlmenue*)


clrscr;
writeln;
writeln;
writeln;
writeln(' Auswahlmen? ');
writeln(' ************** ');
writeln;
writeln;
writeln(' [1] Fussbalfeld !!');
writeln(' [2] Spielfeldabmessungen !!');
writeln(' [3] Aufstellung der Spieler !!');





auswahl2:=upcase(readkey);


if auswahl2='0' then infos:=false;

if auswahl2='1' then infos:=true;

if (auswahl<>'1') then feld ;

if (auswahl<>'2') then size ;

(* if (auswahl<>'3') then option; *)



readln;

halt;
end.

end.

.....................................................


Gruß
-Micha-

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »-Micha-« (27. April 2004, 15:37)


Albert

RCLine User

Wohnort: A-1170 Wien

Beruf: EDV-Consultant

  • Nachricht senden

7

Dienstag, 27. April 2004, 16:18

Servus Micha,

if (auswahl<>'1') then feld ;
if (auswahl<>'2') then size ;
(* if (auswahl<>'3') then option; *)

muß heißen:
if (auswahl='1') then feld ;
if (auswahl='2') then size ;
(* if (auswahl='3') then option; *)

"<>" bedeutet ungleich, "=" bedeutet gleich.

LG
Albert Öttl
Wien

8

Dienstag, 27. April 2004, 20:44

Hi

So, erstmal funzt es jetzt einigermaßen. Noch nicht so ganz, aber immerhin.
Komme garade von Nebenan und jetzt überfällt mich doch datt Mädel noch mit Grafiken. Als Andre Aggasi würde mich das ja nicht stören, das passt schon mit Genug Bier und Schnaps :evil:
Nach ihrer Auskunft ging das bei ihr in der Schule und bei ihr zu Hause meckert das Proggie immer über die Initgraph. Ich werd schwach. :dumm:
Kann es sein das es da kompatibilitäts Probleme geben kann. jedenfalls bekommen wir trotz Pfadangaben etc. Nicht zu Ihren Linien.

Hier mal der Quellcode, soll angeblich funktionieren.

program test;
uses graph,crt;
var gd,gm,menu:integer;

begin
gd:=detect;
initgraph(gd,gm,'c:\tp\bgi');
settextstyle(4,0,10);
setcolor(lightcyan);
outtextxy(35,30,'Hauptmenu');
settextstyle(7,0,6);
setcolor(lightgreen);
outtextxy(160,210,'1:Start');
outtextxy(230,270,'2:Beenden');
readln(menu);
clrscr;

case menu of
1:begin
cleardevice;
setcolor(white);
line(10,50,600,50);
line(10,50,10,400);
line(10,400,600,400);
line(600,50,600,400);
line(295,50,295,400);
circle(295,225,80);
line(500,150,500,300);
line(500,150,600,150);
line(500,300,600,300);
line(575,180,575,270);
line(575,180,600,180);
line(575,270,600,270);
ellipse(500,225,90,270,30,50);
circle(525,225,2);
line(10,150,110,150);
line(110,150,110,300);
line(110,300,10,300);
circle(85,225,2);
ellipse(110,225,270,90,30,50);
line(10,180,36,180);
line(35,180,35,270);
line(35,270,10,270);
readln;
end;
2:Exit;
end;
end.


.....................
Sollten mal lieber den Knigge unterichten
:evil: :evil:

Gruß
-micha-

9

Mittwoch, 28. April 2004, 16:18

initgraph(gd,gm,'c:\tp\bgi');
per detect wird der passende Grafiktreiber ausgewählt. Kann jetzt sein, dass schon das detect fehlschlägt, weil die modernen Karten oder die Dosbox von XP... nicht mehr kompatibel ist...

Oder die egavga.bgi (gibt auch monochrom und hercules sowie ein paar andere Exoten...) muss bei dem Programm dann in c:\tp\bgi\ liegen. Ist das Turbopascal in einem anderen Verzeichnis installiert oder auf einer anderen Platte findet es natürlich die bgi nicht.

PS: Pascal war die Rache der Mathematik an der Informatik. Deshalb ist die Sprache auch ganz vernünftig zum erlernen des Programmierens. Schweinereien sind damit nur sehr schwierig zu machen...

10

Mittwoch, 28. April 2004, 17:09

Hallo

Haben uns jetzt die Originalversion von ihrer Schule Organisiert. Auf ner alten Windows 98 Kiste installiert. Grafik haben wir am laufen. Den ganzen Pladeradatsch mit den If Anweisungen haben wir auch erst mal wider entsorgt. Und siehe da, der Erfolg ist erst mal da. Jetzt kann sie erst mal ihrer anderen Quark fertig machen und ich denke mal in 14 Tagen zum Abgabetermin, passt das schon. :evil:
Ich frag mich blos warum man mit solchen Kleinigkeiten nicht zum Dozenten gehen kann und ne vernünftige Antwort bekommt. Mir graults jetzt schon meine Zwerge irgendwann in die Schule zu schicken :D
So denne erst mal Danke. Fals es noch weiter Sorgen und Nöte gibt, schrei ich noch mal ganz laut hier :evil: :evil:

Gruß
-Micha-

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »-Micha-« (28. April 2004, 17:09)


11

Sonntag, 2. Mai 2004, 09:00

Zitat

Original von -Micha-
Ich frag mich blos warum man mit solchen Kleinigkeiten nicht zum Dozenten gehen kann und ne vernünftige Antwort bekommt. Mir graults jetzt schon meine Zwerge irgendwann in die Schule zu schicken :D

Moin,

tja so ist das heute leider. Bei uns aufn Gymnasium geht nächstes Jahr der einzige Infolehrer, der dies auch mal gelernt hat, von der Schule. Ansonsten gibt es noch 2 Deutsch/Physikerleher, die meinen sich mal in Info versuchen zu müssen. Der eine hatte null Ahnung und ich sollte dann den Schülern HTML + CSS Grundlagen beibringen und der andere Lehrer ist anscheinend bei den Grundlagen von Turbo Pascal stehn geblieben. Nachdem ich eine Aufgabe schneller gelößt hatte als erwartet (wirklich einfach, der macht seit nen halben Jahr das gleiche) war der Lehrer ziemlich ratlos und da hat mich Nachhause geschickt. Oder als ein paar Schüler Zuhause vorgearbeitet haben hat er diese angemault, sie würden ihm den Unterrichtsstoff wegnehmen und sollen dies unterlassen.
Ach ja, der Direktor bekommt fast täglich Bewerbungen, darf aber aus Geldmangel keine neuen Lehrer einstellen.

Ich baue meistens Menüs so auf:

Zitat


PROCEDURE menu;
VAR Auswahl:char;
BEGIN
clrscr;
WRITELN('Willkommen...blablabla');;
WRITELN;
WRITELN('Was wollen Sie.....?'');
WRITELN;
WRITELN('(1) .........');
WRITELN('(2) .........');
WRITELN('(3) .........');
WRITELN('(4) .........');
WRITELN('(5) .........');
WRITELN('(0) Ich will hier raus');
WRITELN;
WRITE('Eingabe: ');
readln(Auswahl);
clrscr;
case Auswahl of
'1': procedure1;
'2': procedure2;
'3': procedure3;
'4': procedure4;
'5': procedure5;
'0': exit;
END;
menu;
END;


Ein Untermenu kannst Du ja genauso aufbauen und es dann in der Caseanweisung aufrufen.

Gruß
Condor
http://modellbau.funnyarea.de Update: 26.10.04 (ElasticFlaps) | Videos / X-Rock Baubericht usw.
www.FunnyArea.de

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Condor« (2. Mai 2004, 09:02)