Partager
Page 1 sur 2 12 DernièreDernière
Affiche les résultats de 1 à 15 sur 19

Sujet : erreur lors de l'execution d'un programme sur delphi

  1. #1
    Inscrit
    May 2011
    Messages
    69
    Remerciements
    1
    Remercié(e) 4 fois dans 4 messages
    Pouvoir de réputation
    7

    erreur lors de l'execution d'un programme sur delphi

    salam

    bein tout est dans le titre !! je sais pas c'est quoi le problème ,quand j’exécute on m'affiche le message suivant :


    c'est une programmation d'une heuristique pour résoudre le problème d’ordonnancement :
    1/r(i),delivry time/Cmax

    le code c'est :
    Code HTML:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Grids, Menus;
    
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Label1: TLabel;
        Button1: TButton;
        MainMenu1: TMainMenu;
        file1: TMenuItem;
        Initialization1: TMenuItem;
        Close1: TMenuItem;
        Validation1: TMenuItem;
        Heuristiques1: TMenuItem;
        H11: TMenuItem;
        H21: TMenuItem;
        H31: TMenuItem;
        H41: TMenuItem;
        Mthodeexacte1: TMenuItem;
        propos1: TMenuItem;
        Tab1: TStringGrid;
        Tab2: TStringGrid;
        Tab3: TStringGrid;
        ordo: TStringGrid;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Tab1KeyPress(Sender: TObject; var Key: Char);
        procedure Button2Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     mat =array[1..20,1..4] of string;
     matrix=array[1..500000] of mat;
    
    var
      Form1: TForm1;
      k,h,s:integer;
    
    implementation
    
    {$R *.dfm}
    
    ///////////////fonction qui définit le maximum entre deux entiers///////////////////
    function max (a,b:integer ):integer ;
    begin
    if a>b then max:=a
           else max:=b;
    end;
    
     // fonction qui calcule le minimum des r(i) //////////////
    function min_date_disp(Tab1:TStringgrid;edit1:Tedit):integer;
    var i ,n,min:integer ;
    begin
     n:=strtoint(edit1.Text);
    min:=strtoint(Tab1.Cells[1,1]);
    for i:=2 to n do
    begin
    if strtoint(Tab1.Cells[1,i]) <= min then min:=strtoint(Tab1.Cells[1,i]);
    end;
    min_date_disp:=min ;
    
    end;
    /////////////////////////sélection de l'ensemble Tprim /////////////////////
      procedure T_prim (Tab1:TStringgrid;t:integer;var Tab2:TStringgrid;edit1:Tedit);
      var k,i,n:integer;
      begin
      k:=0;  n:=strtoint(edit1.Text);
      for i:= 1 to n do
        if Tab1.Cells[1,i]<=inttostr(t) then begin
                                     k:=k+1;
                                     Tab2.Cells[k,0]:=Tab1.Cells[i,0] ;
                                     Tab2.Cells[k,1]:=Tab1.Cells[i,1] ;
                                     Tab2.Cells[k,2]:=Tab1.Cells[i,2] ;
                                     Tab2.Cells[k,3]:=Tab1.Cells[i,3] ;
                                     end;
        end;
    
    //////////////////procedure qui recherche la(les ) tâches correspondnat au qmax///////// ///////////////
    procedure max_q(Tab2:TStringgrid;k:integer ;var Tab3:TStringgrid );
     var h,m,j,l,maximum:integer ;
     begin
      maximum:=strtoint(Tab2.Cells[3,1]);
      for j:= 2 to k do if strtoint(Tab2.Cells[j,3]) >=maximum then begin
                                                                    maximum:=strtoint(Tab2.Cells[j,3]);
                                                                    m:=j;
                                                                    end;
        //////vérifier si on a plusieurs tâches qui ont le même q(i)//////////
      h:=0;
      for l:=1 to k do if strtoint(Tab2.Cells[l,3])=maximum then begin
                                                  h:=h+1;
                                                  Tab3.Cells[h,1]:=Tab2.Cells[l,1];
                                                  Tab3.Cells[h,2]:=Tab2.Cells[l,2];
                                                  Tab3.Cells[h,3]:=Tab2.Cells[l,3];
                                                  end;
    
      end;
      /////////////procedure qui recherche dans Tab3 la tâche qui a le plus grand temps de traitement ////////////////
    function max_p (Tab3:TStringgrid;h:integer):integer;
    var  i,indice,maximum:integer;
    begin
    maximum:=strtoint(Tab3.Cells[1,2]);
    for i:= 1 to h do if strtoint(Tab3.Cells[i,2])>= maximum then begin
                                                                 maximum:=strtoint(Tab3.Cells[i,2]);
                                                                 indice:=i;
    max_p:=indice;                                               end;
    end;
    /////////////procédure qui supprime une tâche déjà ordonnancé/////////
    procedure sup_tache(Tab1:TStringgrid; ordo:TStringgrid;s:integer;edit1:Tedit;var n:integer);
    var i:integer;
    begin
    n:=strtoint(edit1.Text);
    for i:= 1 to n do
    if Tab1.Cells[i,0]=ordo.Cells[s,0] then begin
                                Tab1.Cells[i,0]:=Tab1.Cells[n,0];
                                Tab1.Cells[i,1]:=Tab1.Cells[n,1];
                                Tab1.Cells[i,2]:=Tab1.Cells[n,2];
                                Tab1.Cells[i,3]:=Tab1.Cells[n,3];
                                n:=n-1;
                                end;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var buttonSelected :Integer ;
    var i,n:Integer ;
    begin
    n:= strtoint(edit1.Text);
    Tab1.ColCount := n+1 ;
    Tab1.Cells[0,0]:= 'T(i)' ;
    Tab1.Cells[0,1]:= 'r(i)' ;
    Tab1.Cells[0,2]:= 'p(i)' ;
    Tab1.Cells[0,3]:= 'q(i)' ;
    Tab2.Cells[0,0]:= 'T(i)' ;
    Tab2.Cells[0,1]:= 'r(i)' ;
    Tab2.Cells[0,2]:= 'p(i)' ;
    Tab2.Cells[0,3]:= 'q(i)' ;
    Tab3.Cells[0,0]:= 'T(i)' ;
    Tab3.Cells[0,1]:= 'r(i)' ;
    Tab3.Cells[0,2]:= 'p(i)' ;
    Tab3.Cells[0,3]:= 'q(i)' ;
    ordo.Cells[0,0]:= 'T(i)' ;
    ordo.Cells[0,1]:= 'r(i)' ;
    ordo.Cells[0,2]:= 'p(i)' ;
    ordo.Cells[0,3]:= 'q(i)' ;
    ordo.Cells[0,4]:= 't(i)' ;
    ordo.Cells[0,5]:= 'c(i)' ;
    ordo.Cells[0,6]:= 'c(i)+q(i)' ;
    
    for i:= 1 to n do Tab1.Cells[i,0]:= 'T'+ inttostr(i) ; // on affecte à la ligne 1 les noms des tâches
    
    buttonSelected := MessageDlg('veuillez remplir la matrice ',mtError, mbOKCancel, 0);
    
    end;
    
    procedure TForm1.Tab1KeyPress(Sender: TObject; var Key: Char);
    var i,j :Integer ;
    begin
    for i:=1 to strtoint(edit1.Text) do
    for j:=1 to Tab1.RowCount  do
    begin
    if ((Key<#$30) or (Key>#$39)) and (Key<>#$8) then   Key:=chr(0);
    end;
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    var t,s,n,i,m,c:integer;
    begin
    s:=0; c:=0; n:=strtoint(edit1.Text);
    min_date_disp(Tab1,edit1 );
    while n>=1 do
    begin
    t:=max(c,min_date_disp(Tab1,edit1));
    T_prim (Tab1,t,Tab2,edit1);
    max_q(Tab2,k,Tab3 ) ;
    if h=0 then begin s:=s+1;
                      ordo.Cells[s,0]:=Tab2.Cells[m,0];
                      ordo.Cells[s,1]:=Tab2.Cells[m,1];
                      ordo.Cells[s,2]:=Tab2.Cells[m,2];
                      ordo.Cells[s,3]:=Tab2.Cells[m,3];
                      ordo.Cells[s,4]:=inttostr(t);
                      ordo.Cells[s,5]:=ordo.Cells[s,4]+ordo.Cells[s,2];
                      c:=strtoint(ordo.Cells[s,5]);
                      ordo.Cells[s,6]:=ordo.Cells[s,5]+ordo.Cells[s,3];
                      sup_tache(Tab1,ordo,s,edit1,n);
                end
    
            else begin
                i:= max_p (Tab3,h);
                s:=s+1;
                ordo.Cells[s,0]:=Tab3.Cells[i,0];
                ordo.Cells[s,1]:=Tab3.Cells[i,1];
                ordo.Cells[s,2]:=Tab3.Cells[i,2];
                ordo.Cells[s,3]:=Tab3.Cells[i,3];
                ordo.Cells[s,4]:=inttostr(t);
                ordo.Cells[s,5]:=ordo.Cells[s,4]+ordo.Cells[s,2];
                c:=strtoint(ordo.Cells[s,5]);
                ordo.Cells[s,6]:=ordo.Cells[s,5]+ordo.Cells[s,3];
                sup_tache(Tab1,ordo,s,edit1,n);
                end;
    end;
    
    
    
    
    
    
    
    
    
    
    end;
    
    end.

  2. # ADS
    Inscrit
    Toujours
    Messages
    Plusieurs






     
  3. #2
    Inscrit
    March 2011
    Lieu
    Some where in algeria
    Messages
    89
    Remerciements
    134
    Remercié(e) 62 fois dans 34 messages
    Pouvoir de réputation
    7

    Re : erreur lors de l'execution d'un programme sur delphi

    Salut lalla ;

    Tu as juste une erreur de conversion ( EconvertError), c’est due à l’exécution de la fonction (strtoint).

    Exemple n:=strtoint (edit1.Text);
    L’erreur est que « edit1.text » n’a pas de valeur de départ, donc, lors de l’exécution de l’instruction, le compilateur va convertir une chaine vide (représentée par deux guillemets "") en entier
    D’où l’exception : EconvertError avec le message "" n’est pas une valeur entière correcte.

    Avant chaque conversion, il faut s’assurer que le nombre ou la chaine convertit contient une valeur.

    Essaie d’exécuter ton programme en pas à pas (clique sur la touche F7 pour interpréter instruction par instruction , la tu sauras lequel des « strtoint » déclenche l’erreur.

    Dernière édition par wella2010; 29/04/2012 à 21h29

  4. Les membres suivants ont remercié wella2010 pour cet excellent message :


  5. #3
    Inscrit
    December 2011
    Lieu
    404 not found
    Messages
    479
    Remerciements
    444
    Remercié(e) 102 fois dans 70 messages
    Pouvoir de réputation
    8

    Re : erreur lors de l'execution d'un programme sur delphi

    sinon initialise ton Edit1.Text ou ajouter une exception
    Try
    n:=strToInt(Edit1.Text);
    Except
    Showmessage('Need Integer please');
    Que dit un geek qui se noie ?

    F1 ! ! F1! F1 ! ! F1

  6. #4
    Inscrit
    May 2011
    Messages
    69
    Remerciements
    1
    Remercié(e) 4 fois dans 4 messages
    Pouvoir de réputation
    7

    Re : erreur lors de l'execution d'un programme sur delphi

    ahhhh ok ,c'est logique oui lol
    mais le problème c'est que edit1 c'est à l'utilisateur de la donner , genre au début après compilation l'utilisateur choisit le nombre qu'il veut avoir en edit1 ,pour après faire le traitement
    donc je fais quoi là ? j'ai pas à l'initialiser !!

  7. #5
    Inscrit
    September 2010
    Lieu
    Alger
    Messages
    1 768
    Remerciements
    599
    Remercié(e) 893 fois dans 585 messages
    Pouvoir de réputation
    18

    Re : erreur lors de l'execution d'un programme sur delphi

    Oui, je vois mal un champ Text sans un bouton pour confirmer. Ça permettra de valider la donnée en s'assurant que la conversion s'est bien effectuée.

  8. #6
    Inscrit
    May 2011
    Messages
    69
    Remerciements
    1
    Remercié(e) 4 fois dans 4 messages
    Pouvoir de réputation
    7

    Re : erreur lors de l'execution d'un programme sur delphi

    Bon je vais revoir ça ,pour être sincère jusqu'à hier soir je pensais que c'était ça le sujet du TP mais finalement c'était pas ça ,moi là j'ai fait le traitement pour une instance tant dis qu'il fallait le faire pr un nbr d'instance que l'utilisateur précisera , donc je dois refaire tout à zéro :-(
    j'éspère qu'une fois avoir refait tout ce programme à nouveau ,ce pb ne se posera pas , sinon on en parlera ^^

  9. #7
    Inscrit
    September 2010
    Lieu
    Alger
    Messages
    1 768
    Remerciements
    599
    Remercié(e) 893 fois dans 585 messages
    Pouvoir de réputation
    18

    Re : erreur lors de l'execution d'un programme sur delphi

    Sérieusement, vous n'en avez pas marre des matrices vous qui faites de la Recherche Opérationnelle

  10. #8
    Inscrit
    May 2011
    Messages
    69
    Remerciements
    1
    Remercié(e) 4 fois dans 4 messages
    Pouvoir de réputation
    7

    Re : erreur lors de l'execution d'un programme sur delphi

    "kheli elbir beghtah" :-(
    j'en ai marre de la RO tout court !!!! :-(

  11. #9
    Inscrit
    May 2011
    Messages
    69
    Remerciements
    1
    Remercié(e) 4 fois dans 4 messages
    Pouvoir de réputation
    7

    Re : erreur lors de l'execution d'un programme sur delphi

    le même problème :-( : "" n'est pas une valeur entière :-(

  12. #10
    Inscrit
    September 2010
    Lieu
    Alger
    Messages
    1 768
    Remerciements
    599
    Remercié(e) 893 fois dans 585 messages
    Pouvoir de réputation
    18

    Re : erreur lors de l'execution d'un programme sur delphi

    Citation Envoyé par lalla Voir le message
    le même problème :-( : "" n'est pas une valeur entière :-(
    T'as pensé à initialiser n comme te l'a dit @lixtoon ?

  13. #11
    Inscrit
    May 2011
    Messages
    69
    Remerciements
    1
    Remercié(e) 4 fois dans 4 messages
    Pouvoir de réputation
    7

    Re : erreur lors de l'execution d'un programme sur delphi

    Citation Envoyé par Slown Voir le message
    T'as pensé à initialiser n comme te l'a dit @lixtoon ?
    oui ,bien que le n c'est à l'utilisateur de le donner !! mais ça marche pas :-(

  14. #12
    Inscrit
    December 2011
    Lieu
    404 not found
    Messages
    479
    Remerciements
    444
    Remercié(e) 102 fois dans 70 messages
    Pouvoir de réputation
    8

    Re : erreur lors de l'execution d'un programme sur delphi

    essai ca
    begin
    try
    n:=strtoint(edit1.text);
    except
    on EconverterErreur do showmessage('--> entier SVP');
    end;
    et exécute le fichier exécutable pas le projet depuis l'IDE (delphi)
    Que dit un geek qui se noie ?

    F1 ! ! F1! F1 ! ! F1

  15. #13
    Inscrit
    March 2011
    Lieu
    Some where in algeria
    Messages
    89
    Remerciements
    134
    Remercié(e) 62 fois dans 34 messages
    Pouvoir de réputation
    7

    Re : erreur lors de l'execution d'un programme sur delphi

    Salut lalla ;

    Essaie sa , on principe sa marche :
    1-
    procedure TForm1.Button1Click(Sender: TObject);
    var i,j,n,k,m,z:integer;
    begin
    n:=strtoint(edit1.Text);
    m:=strtoint(edit2.Text);
    qmax.RowCount:=m;
    t.RowCount:=m+1;

    2-
    procedure TForm1.Button4Click(Sender: TObject);
    var l,c,i,m,n,min:integer ;
    w:string;
    begin
    n:=strToint(Edit1.Text);
    m:=strtoint(edit2.Text);
    l:=1; i:=1;
    while (i<=3*m) and (l<=n) do
    begin
    w:=stringgrid1.Cells[1,l];
    min:=strtoint(w);

    for c:=2 to n do begin
    if strtoint(stringgrid1.Cells[c,l])<=min then min:=strtoint(stringgrid1.Cells[c,l]);
    end;
    t.Cells[0,i]:=inttostr(min);
    l:=l+3;
    i:=i+1;

    Je te conseille vivement d'utiliser l'exécution pas à pas, tu peut savoir à chaque moment le contenu de tes variables, il suffit de pointer le curseur dessus.

    :)

  16. #14
    Inscrit
    June 2011
    Messages
    345
    Remerciements
    1
    Remercié(e) 251 fois dans 150 messages
    Pouvoir de réputation
    9

    Re : erreur lors de l'execution d'un programme sur delphi

    Vraiment illisible la syntaxe de Delphi... une horreur !
    Site personnel : www.blueicefield.com

  17. #15
    Inscrit
    September 2010
    Lieu
    Alger
    Messages
    1 768
    Remerciements
    599
    Remercié(e) 893 fois dans 585 messages
    Pouvoir de réputation
    18

    Re : erreur lors de l'execution d'un programme sur delphi

    Citation Envoyé par blueicefield Voir le message
    Vraiment illisible la syntaxe de Delphi... une horreur !
    Exactement, je ne comprends pas pourquoi il est toujours utilisé dans les universités algériennes.

Page 1 sur 2 12 DernièreDernière

Sujets similaires

  1. Ou est l'erreur?
    Par Xaru5 dans le forum Vannes
    Réponses: 16
    Dernier message: 18/12/2011, 14h43
  2. [Résolu] Erreur 720 lors d'une tentative de connexion
    Par lalla dans le forum Fournisseurs d'accès à Internet
    Réponses: 6
    Dernier message: 17/08/2011, 00h49
  3. [Problème] Exécution d'une fonction sous matlab tjr :-(
    Par lalla dans le forum Programmation
    Réponses: 26
    Dernier message: 01/06/2011, 22h25
  4. [Problème] connexion entre interfac Delphi et programme matlab
    Par lalla dans le forum Programmation
    Réponses: 22
    Dernier message: 25/05/2011, 18h29
  5. Recrutement developpeur PHP/MySQL (Access et Delphi serait un plus)
    Par recruteur2011 dans le forum Proposition/Recherche d'emploi
    Réponses: 0
    Dernier message: 16/03/2011, 11h14

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas modifier vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé



Liens annexes