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

Delphi Discussion :

Erreur liée à l'interface visuelle (E2014 Instruction attendue, mais expression de type 'TButton' trouvée)


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2020
    Messages : 7
    Par défaut Erreur liée à l'interface visuelle (E2014 Instruction attendue, mais expression de type 'TButton' trouvée)
    Bonjour à tous,

    A la compilation de mon programme j'obtiens une erreur au sein d'une procedure qui charge un fichier csv dans un TStringGrid.
    Ce qui m'étonne c'est que l'erreur semble liée aux composants visuels qui compose mon interface graphique et qui n'interagissent même pas avec la dite procédure! En effet, quand je test ce morceau de code dans un programme de test, tout marche comme prévu. Quand je test au sein de mon projet de travail qui ne contient pas d'autre code mais juste les composants de l'interface graphique, l'erreur se déclare.

    La procédure en question :
    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
    {CHARGER DIRECTEMENT.CSV DANS TABLEAU}
    procedure TWindow.LoadCSV(Filename: string; sg: TStringGrid);
    var
       i, j, Position, count, edt1: integer;
       temp, tempField : string;
       FieldDel: char;
       Data: TStringList;
    begin
      Data := TStringList.Create;
      FieldDel := ';';
      Data.LoadFromFile(Filename);
      temp :=  Data[1];
      count := 0;
      for i:= 1 to length(temp) do
        if copy(temp,i,1) =  FieldDel then inc(count);
      edt1 := count+1;
      sg.ColCount := 5;        // il y a 5 colonnes
      sg.RowCount := Data.Count +1;   // il y a x lignes + 1 vide
      sg.FixedCols := 0;
      for i := 0 to Data.Count - 1 do
        begin
          temp :=  Data[i];
          if copy(temp,length(temp),1) <> FieldDel then
            temp := temp + FieldDel;
          while Pos('"', temp) > 0 do
            begin
              Delete(temp,Pos('"', temp),1);
            end;
          for j := 1 to 5 do    //for j := 1 to edt1 do
          begin
            Position := Pos(FieldDel,temp);
            tempField := copy(temp,0,Position-1);
            sg.Cells[j-1,i+1] := tempField;
            Delete(temp,1,length(tempField)+1);
          end;
        end;
        Data.Free;
    end;


    Les lignes rapportant une erreur sont les suivantes (L27 et L34) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Delete(temp,Pos('"', temp),1);
    Delete(temp,1,length(tempField)+1);
    Les messages d'erreur :
    [dcc32 Erreur] Unit1.pas(119): E2066 Opérateur ou point-virgule manquant
    [dcc32 Erreur] Unit1.pas(119): E2014 Instruction attendue, mais expression de type 'TButton' trouvée
    [dcc32 Erreur] Unit1.pas(126): E2066 Opérateur ou point-virgule manquant
    [dcc32 Erreur] Unit1.pas(126): E2014 Instruction attendue, mais expression de type 'TButton' trouvée
    [dcc32 Erreur fatale] Project1.dpr(5): F2063 Impossible de compiler l'unité utilisée 'Unit1.pas'


    A tout hasard, le code complet du projet qui provoque une erreur :
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    unit Unit1;
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Grids,
      Vcl.ComCtrls;
     
    type
      TWindow = class(TForm)
        PageCtrl: TPageControl;
        Tab1: TTabSheet;
        Tab2: TTabSheet;
        Tab3: TTabSheet;
        Memo1: TMemo;
        Label1: TLabel;
        LblDebug: TLabel;
        Panel1: TPanel;
        Panel2: TPanel;
        Panel3: TPanel;
        GridEdit: TEdit;
        Grid: TStringGrid;
        BtnSuppr: TButton;
        BtnAdd: TButton;
        Image: TImage;
        LblEName: TLabeledEdit;
        LblELoc: TLabeledEdit;
        Delete: TButton;
        Save: TButton;
        ScrBox: TScrollBox;
        Tile0: TPanel;
        Img0: TImage;
        Lbl0: TLabel;
        Timer: TTimer;
        OpenImage: TOpenDialog;
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        procedure LoadCSV(Filename: string; sg: TStringGrid); // charge le fichier dans le tableau
      end;
     
    var
      Window: TWindow;
     
      datapath: String; // chemins absolus vers les dossiers
     
    implementation
     
    {$R *.dfm}
     
     
     
    {CHARGER DIRECTEMENT.CSV DANS TABLEAU}
    procedure TWindow.LoadCSV(Filename: string; sg: TStringGrid);
    var
       i, j, Position, count, edt1: integer;
       temp, tempField : string;
       FieldDel: char;
       Data: TStringList;
    begin
      Data := TStringList.Create;
      FieldDel := ';';
      Data.LoadFromFile(Filename);
      temp :=  Data[1];
      count := 0;
      for i:= 1 to length(temp) do
        if copy(temp,i,1) =  FieldDel then inc(count);
      edt1 := count+1;
      sg.ColCount := 5;        // il y a 5 colonnes
      sg.RowCount := Data.Count +1;   // il y a x lignes + 1 vide
      sg.FixedCols := 0;
      for i := 0 to Data.Count - 1 do
        begin
          temp :=  Data[i];
          if copy(temp,length(temp),1) <> FieldDel then
            temp := temp + FieldDel;
          while Pos('"', temp) > 0 do
            begin
              Delete(temp,Pos('"', temp),1);
            end;
          for j := 1 to 5 do    //for j := 1 to edt1 do
          begin
            Position := Pos(FieldDel,temp);
            tempField := copy(temp,0,Position-1);
            sg.Cells[j-1,i+1] := tempField;
            Delete(temp,1,length(tempField)+1);
          end;
        end;
        Data.Free;
    end;
     
     
    procedure TWindow.FormCreate(Sender: TObject);
    begin
      datapath := ExtractFilePath(Application.ExeName) +'../../datas/';
    end;
     
     
    end.
    Et ici, le code du projet de test qui fonctionne :
    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
    84
    85
    86
    87
    88
    unit Unit1;
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids;
     
    type
      TWindow = class(TForm)
        Memo1: TMemo;
        Grid: TStringGrid;
        Button1: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
     
        procedure LoadCSV(Filename: string; sg: TStringGrid);
     
      end;
     
    var
      Window: TWindow;
      datapath : String;
     
    implementation
     
    {$R *.dfm}
     
     
     
     
    {CHARGER DIRECTEMENT.CSV DANS TABLEAU}
    procedure TWindow.LoadCSV(Filename: string; sg: TStringGrid);
    var
       i, j, Position, count, edt1: integer;
       temp, tempField : string;
       FieldDel: char;
       Data: TStringList;
    begin
      Data := TStringList.Create;
      FieldDel := ';';
      Data.LoadFromFile(Filename);
      temp :=  Data[1];
      count := 0;
      for i:= 1 to length(temp) do
        if copy(temp,i,1) =  FieldDel then inc(count);
      edt1 := count+1;
      sg.ColCount := 5;        // il y a 5 colonnes
      sg.RowCount := Data.Count +1;   // il y a x lignes + 1 vide
      sg.FixedCols := 0;
      for i := 0 to Data.Count - 1 do
        begin
          temp :=  Data[i];
          if copy(temp,length(temp),1) <> FieldDel then
            temp := temp + FieldDel;
          while Pos('"', temp) > 0 do
            begin
              Delete(temp,Pos('"', temp),1);
            end;
          for j := 1 to 5 do    //for j := 1 to edt1 do
          begin
            Position := Pos(FieldDel,temp);
            tempField := copy(temp,0,Position-1);
            sg.Cells[j-1,i+1] := tempField;
          //  memo1.Lines.Add(tempfield);
            Delete(temp,1,length(tempField)+1);
          end;
        end;
        Data.Free;
    end;
     
     
    procedure TWindow.Button1Click(Sender: TObject);
    begin
     LoadCSV(Datapath + '1.csv', Grid) ;
    end;
     
    procedure TWindow.FormCreate(Sender: TObject);
    begin
      datapath := ExtractFilePath(Application.ExeName) +'../../datas/';
     
    end;
     
    end.
    Merci à vous !

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2020
    Messages : 7
    Par défaut
    J'ai fini par localiser la source de l'erreur.

    J'avais nommé un bouton "Delete"... apparemment Delphi n'aime pas du tout.

  3. #3
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Gilbert.P Voir le message
    J'ai fini par localiser la source de l'erreur.

    J'avais nommé un bouton "Delete"... apparemment Delphi n'aime pas du tout.
    oui Delete est un mot clé

    je remarque aussi que tu utilises "Copy(String, x, 1)"...c'est tout simplement "String[x]"
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fin d'instruction attendue(erreur 800A0400 ) en vbscript
    Par regisyves dans le forum VBScript
    Réponses: 4
    Dernier message: 06/06/2010, 22h55
  2. vbs erreur : fin d'instruction attendue
    Par Armadeus dans le forum Windows Vista
    Réponses: 0
    Dernier message: 25/08/2009, 10h28
  3. [Débutant(e)]Erreur 'class' or 'interface' expect
    Par chevy dans le forum Général Java
    Réponses: 7
    Dernier message: 30/03/2005, 08h13
  4. [Logiciel]Cherche graphisme pour des interfaces visuelles
    Par smyley dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 14/11/2004, 02h13
  5. Diagramme des classes pour l'interface visuel
    Par robv dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 25/06/2004, 10h50

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