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 :

Déclaration d'un tableau


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Points : 79
    Points
    79
    Par défaut Déclaration d'un tableau
    Bonjour

    J'ai récupérer du code que j'essaie d'intégrer dans mon application. J'ai des erreurs a la compilation... et je ne vois pas trop ce qu'il cloche :
    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
    unit EncodingType;
     
    interface
     
    uses
     Classes;
     
    implementation
    type
      TTxtFileType = (txTxtOrBin,
        txUTF8,
        txUNICODE,
        txUNIBIG,
        txRTF,
        txWORDDOC
      );
     
      TTxtFileSign = record
         Code : TTxtFileType;
         Sign : LongWord;
         Mask : LongWord;
      end;
     
    const
      TxtSignsCount   = 5;
      TxtSign_UTF8    : TTxtFileSign = (Code: txUTF8;    Sign:$00BFBBEF; Mask: $00FFFFFF);
      TxtSign_UNICODE : TTxtFileSign = (Code: txUNICODE; Sign:$0000FEFF; Mask: $FF00FFFF);
      TxtSign_UNIBIG  : TTxtFileSign = (Code: txUNIBIG;  Sign:$0000FFFE; Mask: $00FFFFFF);
      TxtSign_RTF     : TTxtFileSign = (Code: txRTF;     Sign:$74725C7B; Mask: $FFFFFFFF);
      TxtSign_WORDDOC : TTxtFileSign = (Code: txWORDDOC; Sign:$E011CFD0; Mask: $FFFFFFFF);
     
    var
      TxtFileSigns : array[0..TxtSignsCount-1] of TTxtFileSign = (
        TxtSign_UTF8,
        TxtSign_UNICODE,
        TxtSign_UNIBIG,
        TxtSign_RTF,
        TxtSign_WORDDOC
      );
     
    function TypeOfTextfile(const filename : string) : TTxtFileType;
    var
      Flux : TFileStream;
      Sign : LongWord;
      N    : integer;
    begin
      Flux := TFileStream.Create(FileName, fmOpenRead);
      try
        Flux.Read(Sign, 4);
      finally
        Flux.Free;
      end;
     
      result := txTxtOrBin;
     
      for N := 0 to High(TxtFileSigns) do
      begin
        if (Sign and TxtFileSigns[N].Mask) = TxtFileSigns[N].Sign then
        begin
          result := TxtFileSigns[N].Code;
          break;
        end;
      end;
    end;
    end.
    et voici les erreurs :
    [Pascal Erreur] EncodingType.pas(34): E2029 '(' attendu(e) mais identificateur 'TxtSign_UTF8' trouvé(e)
    [Pascal Erreur] EncodingType.pas(35): E2004 Identificateur redéclaré : 'TxtSign_UNICODE'
    [Pascal Erreur] EncodingType.pas(36): E2004 Identificateur redéclaré : 'TxtSign_UNIBIG'
    [Pascal Erreur] EncodingType.pas(37): E2004 Identificateur redéclaré : 'TxtSign_RTF'
    [Pascal Erreur] EncodingType.pas(38): E2004 Identificateur redéclaré : 'TxtSign_WORDDOC'
    [Pascal Erreur] EncodingType.pas(39): E2029 ',' ou ':' attendu(e) mais ')' trouvé(e)
    [Pascal Erreur] EncodingType.pas(41): E2023 La fonction nécessite un type de résultat
    [Pascal Erreur] EncodingType.pas(41): E2029 ';' attendu(e) mais '(' trouvé(e)
    [Pascal Erreur] EncodingType.pas(41): E2029 '=' attendu(e) mais ')' trouvé(e)
    [Pascal Erreur] EncodingType.pas(41): E2029 '(' attendu(e) mais ';' trouvé(e)
    [Pascal Erreur] EncodingType.pas(42): E2010 Types incompatibles : 'string' et 'TTxtFileType'
    [Pascal Erreur] EncodingType.pas(46): E2050 Instructions non autorisées dans la partie Interface
    [Pascal Erreur] EncodingType.pas(47): E2003 Identificateur non déclaré : 'fmOpenRead'
    [Pascal Erreur] EncodingType.pas(54): E2003 Identificateur non déclaré : 'result'
    [Pascal Erreur] EncodingType.pas(65): E2029 'IMPLEMENTATION' attendu(e) mais '.' trouvé(e)
    [Pascal Erreur] EncodingType.pas(67): E2029 Déclaration attendu(e) mais fin de fichier trouvé(e)
    J'ai l'impression que c'est "TTxtFileSign" qui pose problème... mais je ne vois pas pour quoi....

    Est ce que quelqu'un a une idée ?
    merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 714
    Points : 25 607
    Points
    25 607
    Par défaut
    Dommage de ne pas ré-utiliser l'énumération dans le Tableau, c'est tellement plus pratique, évite d'avoir un nombre différent, ...

    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
    unit TextFileTypeUtils;
     
    interface
     
    uses
      Classes, SysUtils;
     
    type
      TTxtFileType = (txTxtOrBin, txUTF8, txUNICODE, txUNIBIG, txRTF, txWORDDOC);
     
    function GetTypeOfTextFile(const filename : string) : TTxtFileType;
     
    implementation
     
    type
      TTxtFileSign = record
         Sign : LongWord;
         Mask : LongWord;
      end;
     
    const
      SpeudoBOMs: array[TTxtFileType] of TTxtFileSign =
        (
          (Sign:$00000000; Mask: $00000000),
          (Sign:$00BFBBEF; Mask: $00FFFFFF),
          (Sign:$0000FEFF; Mask: $FF00FFFF),
          (Sign:$0000FFFE; Mask: $00FFFFFF),
          (Sign:$74725C7B; Mask: $FFFFFFFF),
          (Sign:$E011CFD0; Mask: $FFFFFFFF)
        );
     
    function GetTypeOfTextFile(const FileName: string) : TTxtFileType;
    var
      Flux : TFileStream;
      Sign : LongWord;
    begin
      Flux := TFileStream.Create(FileName, fmOpenRead);
      try
        Flux.Read(Sign, 4);
      finally
        Flux.Free;
      end;
     
      for Result := Succ(Low(Result)) to High(Result) do
        if (Sign and SpeudoBOMs[Result].Mask) = SpeudoBOMs[Result].Sign then
          Exit;
     
      Result := txTxtOrBin;
     
    end;
     
    end.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Points : 79
    Points
    79
    Par défaut
    Merci beaucoup d'avoir pris le temps de de revoir un peu le code. Ca m'est très utile pour progresser en delphi

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 12/02/2006, 22h46
  2. [Tableaux] Déclaration d'un tableau à 2 dimensions
    Par kcizth dans le forum Langage
    Réponses: 5
    Dernier message: 04/01/2006, 16h35
  3. [VB6] Déclaration d'un tableau avec variable en paramètre.
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/10/2005, 13h21
  4. Déclaration d'un tableau d'Object
    Par elitost dans le forum Groovy
    Réponses: 1
    Dernier message: 19/10/2005, 15h15
  5. Réponses: 2
    Dernier message: 27/05/2002, 20h46

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