2010-03-09 19 views
2

J'utilise Delphi 2007 et j'essaie de faire un fichier de type d'enregistrement. En Delphi 7, il n'y avait pas de problèmes pour moi.Erreur de fichier d'enregistrement

Type 
Kompiuteris = record 
... 
end; 
Failas = file of Kompiuteris; 

Mais dans Delphi 2007, j'ai un problème. Erreur dit que: Type "Kompiuteris" doit être finalisé. Alors, qu'est-ce qui ne va pas?

+1

S'il vous plaît nous montrer ce que ... est vraiment. –

+0

Il y a beaucoup de chaînes. Maintenant, je reçois le problème et je vais le résoudre. – gedO

+0

L'affichage d'une définition d'enregistrement sous la forme '...' et l'indication de problèmes de définition d'enregistrement ne sont pas utiles. À l'avenir, publiez la définition réelle du code à l'origine du problème et incluez la version de Delphi que vous utilisez (car les différentes versions ont des fonctionnalités différentes), et vous aurez de bien meilleures chances d'obtenir de l'aide. Vous avez eu beaucoup de chance cette fois-ci que le message d'erreur soit suffisamment clair pour que @glob puisse vous aider si rapidement. –

Répondre

5

De l'documentation:

Certains types sont traités différemment par le compilateur sur une base interne en ce sens qu'ils doivent être finalisés correctement pour libérer toutes les ressources qu'ils peuvent détenir actuellement. Étant donné que le compilateur ne peut pas déterminer quel type est réellement stocké dans la section variant d'un enregistrement au moment de l'exécution, il n'est pas possible de garantir que ces types de données spéciaux sont correctement finalisés.

La chaîne est l'un de ces types de données qui doivent être finalisés, et en tant que tels, ils ne peuvent pas être stockés dans un type de fichier.

+0

Ou ... Maintenant les choses se clarifient – gedO

+0

Si j'utilise Delphi 2005, est-ce que je reçois la même erreur ?? – gedO

+1

Oui. Vous obtiendriez la même erreur dans * toutes * les versions de Delphi supérieures ou égales à 2. Peut-être que vous avez désactivé l'option du compilateur "longues chaînes". –

0

Vous devez définir des champs de chaîne record dimensionnement

comme exemple:

si vous avez champ dans l'enregistrement appelé nom

Type 
Kompiuteris = record 
    name :String[255] ; // Works fine 
end;