1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Professionelle MS-DOS Anwendungen erstellen

Discussion in 'Programmieren' started by schwarzm, Mar 29, 2005.

Thread Status:
Not open for further replies.
  1. schwarzm

    schwarzm Viertel Gigabyte

    Durch welche Zahlen soll ich denn das "irgendwas" ersetzen. Habe jetzt einfach mal Zahlen wie 1,2,100 eingesetzt aber das selbe Problem tritt auf.
     
  2. specialist7

    specialist7 Kbyte

    Hallo!

    Habe nicht alle vorherigen Posts lesen können, aber wozu brauchst du die DOS-Programme? Einfach nur aus Spaß an der Freude oder gibt es einen Grund?

    MfG
     
  3. Michi0815

    Michi0815 Guest

    in der ersten zeile von dem ganzen gewirx steht
    const MenuTxt: array[0..<irgendwas>] of string = ('Menüpunkt1', 'Menüpunkt2', ...);

    das bedeutet du legst ein array (=liste) von strings (=zeichenketten, sätzen, whatever) an diese liste ist durch nummeriert von 0 bis <irgendwas>. nachdem in der klammer nur 2 einträge des arrays gefüllt werden (nämlich der 0. und der 1.) solltest du "1" eintragen (und die "..." am ende der "befüllung" entfernen, die da für allfällige weitere einträge stehen)
     
  4. schwarzm

    schwarzm Viertel Gigabyte

    @specialist7 Du hast es erfasst ;). Aus Spaß an der Freude . . .

    @ Michi0815
    Irgendwie habe ich das so gemacht wie du mir gesagt hast. Zahl eingefügt und auch die ... gelöscht. Aber es erscheint immernoch beim Compiler die Meldung:

    untitl~1.pas(1,26) Error: Illegal expression
    untitl~1.pas(1,26) Error: Can't evaluate constant expression
    untitl~1.pas(1,26) Fatal: Syntax error, ] expected but ordinal const found

    Was ist nun schon wieder ? :confused:
     
  5. Michi0815

    Michi0815 Guest

    bitteschön, kompilierbereit...
    Code:
    Program Test;
    uses crt;
    const MenuCount = 3;
        MenuTxt: array[1..MenuCount] of string = ('Menpunkt1', 'Menpunkt2', 'Ende');
        Done: boolean = false;
    var Markiert, lv: byte;
    
    begin
         Markiert:=1;
         repeat
              for lv:=1 to MenuCount do
              begin
                    if lv=Markiert then
                    begin
                         TextColor(lightred);
                         TextBackGround(white);
                    end else begin
                         TextColor(red);
                         TextBackGround(black);
                    end;
                    gotoxy(10, lv*2+2);
                    write(MenuTxt[lv]);
              end;
              case readkey of
                  #13: begin {Enter Taste}
                            case Markiert of
                                1: begin
                                        gotoxy(24, 24);
                                        writeln('Menpunkt 1');
                                   end;
                                2: begin
                                        gotoxy(24, 24);
                                        writeln('Menpunkt 2');
                                   end;
                                3: Done:=true;
                            end;
                       end;
                  #80: begin {Taste nach unten}
                            Markiert:=Markiert + 1;
                            if Markiert > MenuCount then Markiert:=1;
                       end;
                  #72: begin {Taste nach oben}
                            Markiert:=Markiert - 1;
                            if Markiert = 0 then Markiert:=MenuCount;
                       end;
              end;
         until Done
    end.
    
     
  6. schwarzm

    schwarzm Viertel Gigabyte

    Danke Danke Danke

    :bet: :bet: :bet:

    Damit hat es super geklappt! Aber leider befürchte ich, dass mir irgendwann wieder etwas einfällt was ich gerne als Prog hätte. ;)
     
  7. Michi0815

    Michi0815 Guest

  8. schwarzm

    schwarzm Viertel Gigabyte

    Kannst du mir nochmal einen Code hier hinposten?

    Oben der Code mit dem Programm, kann man da auch so eine Funktion einfügen, dass folgendes passiert:

    - Wenn jemand F1 drückt soll ein Bildschirm mit einem Text erscheinen.

    Geht das? Kannst du mir das machen oder dauert das zu lange?

    Bin für jede Hilfe dankbar!

    Gruß
    schwarzm
     
  9. schwarzm

    schwarzm Viertel Gigabyte

    Ich meine das Programm mit diesem Code:

     
  10. Michi0815

    Michi0815 Guest

    dauert gar nicht nicht lang ;)

    aber soweit ich das sehe ist dein proggy ist nicht sonderlich praxistauglich...

    und zwar weil: programme sollen nicht primär etwas (statisch) anzeigen, sondern sie sollen (dynamisch) auf den benutzer reagieren. daher brauchst du eine loop, die permanent die diversen eingabegeräte abfragt und wenn etwas "interessantes" geschieht die entsprechende aktion auslöst.

    nur als beispiel (fragt nur die tastatur ab)

    Code:
    Program Test2;
    uses crt;
    
    procedure Init;
    begin
         TextMode(Co80);
         Window(1, 1, 80, 2);
         TextColor(black);
         TextBackGround(green);
         clrscr;
         Write('Beispielanwendung schwarzm&michi0815');
         Window(1, 3, 80, 24);
         TextColor(White);
         TextBackGround(Blue);
         clrscr;
         Writeln(' Nummer ³ Name ³ Adresse ');
         writeln(' ÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ');
         writeln(' 4711 ³ blablabla ');
         writeln(' 4711 ³ blablabla ');
         Window(1, 25, 80, 25);
         TextColor(LightGray);
         TextBackGround(Red);
         clrscr;
         write('->³ ENTER = Beenden ³ F3-Lfs');
         Window(50, 3, 75, 24);
         TextColor(White);
         TextBackGround(Magenta);
         clrscr;
         Writeln;
         Writeln(' A..Kundendaten');
         writeln(' B..Transaktionen');  
    end;
    
    Procedure Hilfe;
    begin
         Window(10, 10, 70, 15);
         TextColor(Blue);
         TextBackGround(Yellow);
         clrscr;
         Writeln;
         Writeln(' Text');
         writeln(' Noch mehr Text');  
    end;
    
    var c: word;
    begin
         Init;
         
         repeat
              c:=ord(readkey); // Zeichen einlesen
              if c = 0 then // "Spezialtaste" gedrückt
                   c:=ord(readkey) + 256;
              
              case c of 
                 13:  begin end; // Programmende; nichts passiert hier
                 315: begin      // F1-Taste (59 + 256)
                           Hilfe;
                           { Irgendwas }
                      end;
                 { weitere Tastencodes }
                 else Init;      // Stellt den Ausgangszustand wieder her
              end;
         until c = 13;
    end.   
    
    
     
  11. schwarzm

    schwarzm Viertel Gigabyte

    Ich danke dir vielmals für deine Hilfe!!!

    Gruß
    schwarzm
     
  12. schwarzm

    schwarzm Viertel Gigabyte

    Jetzt bräuchte ich ein letztes Mal deine Hilfe! Versprochen!!!

    Ich brauche nochma genauso ein Fenster wenn man jeweils auf A und auf B drückt! Kannst du mir den kompletten Code auch nochma hierhin posten?!

    Bin für deine Hilfe dankbar!!!

    Gruß
    schwarzm
     
  13. Michi0815

    Michi0815 Guest

    wozu hab' ich eigentlich die ascii-tabelle online gestellt :rolleyes:

    so quasi als protest gebe ich dir jetzt nur für das a den code, das b darfst du selber machen...
    Code:
    Program Test2;
    uses crt;
    
    procedure Init;
    begin
         TextMode(Co80);
         Window(1, 1, 80, 2);
         TextColor(black);
         TextBackGround(green);
         clrscr;
         Write('Beispielanwendung schwarzm&michi0815');
         Window(1, 3, 80, 24);
         TextColor(White);
         TextBackGround(Blue);
         clrscr;
         Writeln(' Nummer ³ Name ³ Adresse ');
         writeln(' ÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ');
         writeln(' 4711 ³ blablabla ');
         writeln(' 4711 ³ blablabla ');
         Window(1, 25, 80, 25);
         TextColor(LightGray);
         TextBackGround(Red);
         clrscr;
         write('->³ ENTER = Beenden ³ F3-Lfs');
         Window(50, 3, 75, 24);
         TextColor(White);
         TextBackGround(Magenta);
         clrscr;
         Writeln;
         Writeln(' A..Kundendaten');
         writeln(' B..Transaktionen');  
    end;
    
    Procedure Kundendaten;
    begin
             { Fenster auf }
             { Farbe einstellen }
             { Text ausgeben }
             { wie gehabt... }
    end;
    
    Procedure Hilfe;
    begin
         Window(10, 10, 70, 15);
         TextColor(Blue);
         TextBackGround(Yellow);
         clrscr;
         Writeln;
         Writeln(' Text');
         writeln(' Noch mehr Text');  
    end;
    
    var c: word;
    begin
         Init;
         
         repeat
              c:=ord(readkey); // Zeichen einlesen
              if c = 0 then // "Spezialtaste" gedrückt
                   c:=ord(readkey) + 256;
              
              case c of 
                 13:  begin end; // Programmende; nichts passiert hier
                 315: begin      // F1-Taste (59 + 256)
                           Hilfe;
                           { Irgendwas }
                      end;
                 65: 97: begin // grosses A und kleines a
                           Kundendaten;
                      end;
                 { weitere Tastencodes }
                 else Init;      // Stellt den Ausgangszustand wieder her
              end;
         until c = 13;
    end.   
     
  14. schwarzm

    schwarzm Viertel Gigabyte

    Beim Kompilieren kommen drei Fehlermeldungen!!!

    Außerdem meine ich, dass wenn man A drückt ein anderer Text kommt als wenn man B oder wie schon gesagt F1 kommt.

    Gruß
     
  15. Michi0815

    Michi0815 Guest

    welche fehler?

    EDIT: habs grade bemerkt...
    richtig ist
    Code:
     [...]
       65, 97: begin // grosses A und kleines a
                           Kundendaten;
                      end;
    [...]
    
    das proggy reagiert jetzt nur auf das a, nicht auf das b. da mit das geht musst du nach dem selben strickmuster einen eigenen case-block für b und B (es soll ja beides gleich behandelt werden) einfügen und darin eine procedure aufrufen.+
     
  16. RH81

    RH81 ROM

    Hallo an alle,

    entschuldigt, wenn ich hier einfach so reinplatze. Bin seit heut bei diesem Forum und hab keine Ahnung, wie man eigene Threads verfaßt.
    Aber ein Problem hab ich und das ist auch schon viel wert.
    Und zwar hab ich BF1942 ganz normal installiert. Plus die beiden AddOns Road To Rome und Secret Weapons. Und nun hab ich mir Forgotten Hope runtergeladen. Ich installiere also alle drei Teile von der Version 0.65. Offziell erstellt dies nur ein uninstall-icon. Also starte ich mit folgendem Aufruf
    "G:\Spiele\Battlefield 1942\BF1942.exe" +game fh

    Spiel startet. Ich wähle ein Map aus und wo es fast fertig geladen hat, schließt sich das Spiel und ich bin zurück auf dem Desktop.

    Also hab ich einen Patch von Version 0.65 und 0.66 auf 0.67 gesucht, installiert und bei dieser Install. erstellt es diesmal auch ein richtiges Start-Icon für diesen Mod. Aber auch hier bricht es einfach ab.

    Also hab ich einen Patch auf die Version 0.67a gesucht und installiert und wieder bricht er ab, bevor die Map komplett geladen hat.
    Bin fast am verzweifeln, was kann ich noch tun? Ich hoffe, jemand nimmt sich meiner an und hilft.

    Achso...System: Athlon XP2200+ also 1,8GHz, 1024 MB RAM und GeForce4MX440 <--- vielleicht helfen diese Angaben etwas.

    Gruß Ronald

    PS: Hilfe-emails an RonaldH81@web.de oder hier antworten. Danke
     
  17. schwarzm

    schwarzm Viertel Gigabyte

    Also das Proggi lässt sich jetzt starten wie du es gesagt hattest, aber es reagiert nicht auf A. Auf F1 reagiert es ganz normal aber nicht auf A.

    Wo liegt nun der Fehler?

    Gruß
     
  18. Michi0815

    Michi0815 Guest

    Code:
    Program Test2;
    uses crt;
    
    procedure Init;
    begin
         TextMode(Co80);
         Window(1, 1, 80, 2);
         TextColor(black);
         TextBackGround(green);
         clrscr;
         Write('Beispielanwendung schwarzm&michi0815');
         Window(1, 3, 80, 24);
         TextColor(White);
         TextBackGround(Blue);
         clrscr;
         Writeln(' Nummer ³ Name ³ Adresse ');
         writeln(' ÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ');
         writeln(' 4711 ³ blablabla ');
         writeln(' 4711 ³ blablabla ');
         Window(1, 25, 80, 25);
         TextColor(LightGray);
         TextBackGround(Red);
         clrscr;
         write('->³ ENTER = Beenden ³ F3-Lfs');
         Window(50, 3, 75, 24);
         TextColor(White);
         TextBackGround(Magenta);
         clrscr;
         Writeln;
         Writeln(' A..Kundendaten');
         writeln(' B..Transaktionen');  
    end;
    
    Procedure Kundendaten;
    begin
         Window(5, 5, 75, 20);
         TextColor(Green);
         TextBackGround(Black);
         clrscr;
         Writeln;
         Writeln(' Kundendaten');
         writeln(' Text, BlaBlaBla');  
    end;
    
    Procedure Hilfe;
    begin
         Window(10, 10, 70, 15);
         TextColor(Blue);
         TextBackGround(Yellow);
         clrscr;
         Writeln;
         Writeln(' Text');
         writeln(' Noch mehr Text');  
    end;
    
    var c: word;
    begin
         Init;
         
         repeat
              c:=ord(readkey); // Zeichen einlesen
              if c = 0 then // "Spezialtaste" gedrückt
                   c:=ord(readkey) + 256;
              
              case c of 
                 13:  begin end; // Programmende; nichts passiert hier
                 315: begin      // F1-Taste (59 + 256)
                           Hilfe;
                           { Irgendwas }
                      end;
                 65, 97: begin // grosses A und kleines a
                           Kundendaten;
                      end;
                 { weitere Tastencodes }
                 else begin
                           Init;      // Stellt den Ausgangszustand wieder her
                           Window(1, 1, 80, 25);
                           gotoxy(77, 25);
                           TextColor(Black);
                           TextBackGround(Red);
                           write(c);
                      end;      
              end;
         until c = 13;
    end.   
    
    macht das wenn ich 'a' drücke (TectColor geht nicht wirklich im gnome-terminal):
    [​IMG]
     
  19. schwarzm

    schwarzm Viertel Gigabyte

    Vielen Dank für deine schnelle Hilfe!
    Ich werde mir das jetzt mit B auch noch zusammenproggen.

    Also vielen Dank!!!

    Gruß
    schwarzm
     
  20. Michi0815

    Michi0815 Guest

    sehe grade, ich habe die deluxe-test-version verraten ;)
    drücke mal eine andere taste und schau nach unten rechts...
     
Thread Status:
Not open for further replies.

Share This Page