IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Pascal Discussion :

[LG]chaine + fichier


Sujet :

Langage Pascal

  1. #41
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 36
    Points : 4
    Points
    4
    Par défaut
    Les différents essais n'ont rien donnés, donc voici le code qui pose problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    {$m 8096,0,0}
    uses crt,graph,dos;
     
     
    var
    tabch:array[0..20] of string;
    f:text;
    s,cpts,posvs,chaine1,chaine2:string;
    c:char;
    pilote,mode:integer;
    x,y,x1,y1,x2,y2,cpt,posv,rang,doserror:integer;
    begin
    rang:=1;
    cpt:=1;
    x:=100;
    y:=120;
    x1:=90;
    y1:=105;
    x2:=360;
    y2:=140;
     
    pilote:=detect;
    initgraph(pilote,mode, 'c:\TP\BGI');
     
    assign(f,'c:\TP\menu.txt');
    reset(f);
     
             while not eof(f) do
                   begin
     
                        readln(f,s);
     
                        chaine1:=copy(s,1,pos(';',s)-1);
                        tabch[cpt]:=copy(s,pos(';',s)+1,length(s));
                        outtextxy(x,y,chaine1);
                        y:=y+40;
                        cpt:=cpt+1;
                   end;
    close(f);
     
     
    setcolor(2);
    rectangle(x1,y1,x2,y2);
    begin
    repeat
    c:=readkey;
    case c of
    #80: begin
         cpt:=cpt-1;
         setcolor(0);
         rectangle(x1,y1,x2,y2);
         setcolor(2);
         rectangle(x1,y1+40,x2,y2+40);
         setcolor(0);
         rectangle(x1,y1-40,x2,y2-40);
         y1:=y1+40;
         y2:=y2+40;
    end;
    #72: begin
         cpt:=cpt+1;
         setcolor(0);
         rectangle(x1,y1,x2,y2);
         setcolor(2);
         rectangle(x1,y1-40,x2,y2-40);
         setcolor(0);
         rectangle(x1,y1+40,x2,y2+40);
         y1:=y1-40;
         y2:=y2-40;
    end;
     
    #13: begin
     
         swapvectors;
         exec('c:\windows\notepad.exe','');
         swapvectors;
    end;
     
    end;
    until c=#27;
    readln;
    end;
    end.
    Et celui qui vas bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    {$M 8192,0,0}
    uses dos;
     
    begin
    swapvectors;
    exec('c:\windows\notepad.exe','');
     
    swapvectors;
    writeln(doserror);
    readln;
    end.

  2. #42
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Ben apparemment, il faut assez de mémoire pour utiliser le mode graphique, donc ben je sais pas trop comment tu pourrais te tirer de là... A part en utilisant le mode texte ( on peut d'ailleurs faire des interfaces très bien foutues, surtout si on utilise le mode texte du VESA 132*60).
    Voilà a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #43
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 36
    Points : 4
    Points
    4
    Par défaut
    Ca ne vient pas du mode graphique car ne vient pas me dire que c'est l'ouverture du bloc note qui bouffe de la mémoire.
    Mon prog est minuscuuuuuule.

  4. #44
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Citation Envoyé par wormful_sickfoot
    Ben apparemment, il faut assez de mémoire pour utiliser le mode graphique (...)
    Oui, l'unité Graph de TP7 est assez pourrave pour ça. Elle copie le BGI en mémoire ... Mieux vaut utiliser la bonne vieille unité de HDD34 ;-) (qui ne met charge rien en mémoire, tout est dans le code)

    Sinon essaye de corriger {$m 8096,0,0} en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {$m 8096,0,200000}
    InitGraph tente de charger un truc en RAM, or tu dis que le tas a une taille de 0 octets ... donc InitGraph renvoie une erreur :-p

    @+ Haypo

  5. #45
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Un ptit bug dans ton programme : Readkey renvoie #0 pour les touches étendues ! Il faut rappeler la fonction pour avoir le code étendu. Solution de passe-passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if code=#0 then code := Char(Ord(Readkey) +128);
    (fonction Char ou Ascii, je sais plus)

    Tu auras un code > 128 si c'est une touche étendue. Tu auras donc un seul case ;-)

    @+ Haypo

  6. #46
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Exact Haypo, les codes des touches sont pas bons. HDD34 avait proposé une solution meilleure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ch:=readkey;
    case ch of
    #0 : begin
         ch:=readkey;
         case ch of
         #80 : {direction bas}
         #72 : {direction haut}
         end;
         end;
    #13 : {entrée}
    end;
    Voilà a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/06/2005, 16h18
  2. Modifier tout les fichier comportant une chaine
    Par narmataru dans le forum Linux
    Réponses: 10
    Dernier message: 28/09/2004, 16h58
  3. [langage] longueur d'une chaine lue ds un fichier
    Par perlaud dans le forum Langage
    Réponses: 6
    Dernier message: 30/06/2004, 22h36
  4. Trouver un fichier contenant une chaine ?
    Par narmataru dans le forum Linux
    Réponses: 2
    Dernier message: 29/04/2004, 10h49
  5. chaines de caractères dans fichier .rc ou .res
    Par raggadoll dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/03/2004, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo