J'essaie d'écrire une procédure à Delphes.
Cette procédure reçoit le nom de E2033 Types de Var réel et formel
Les paramètres doivent être identiques p>
blockQuote> Procédure: P> TControl code> élément décroissant, puis essayez de changer certaines propriétés.
Mais quand j'essaie de le faire, Delphi donne une erreur comme:
procedure Change_prop(var Control: TControl;height:integer;width:integer);
begin
//......
end;
3 Réponses :
Il suffit de supprimer procedure Change_prop(Control: TControl;height:integer;width:integer);
begin
......
end;
Il vous suffit de supprimer le var dans le paramètre de contrôle et de le faire un paramètre de valeur. Étant donné que les objets DELPHI sont réellement implémentés en tant que types de référence, vous pouvez appeler des méthodes sur eux, modifier les champs des membres, etc. Même si vous les transmettez à une procédure en tant que paramètre de valeur ou de const. P>
Qu'en est-il quand, par exemple, je veux appeler l'événement OnKeydown, où le paramètre "Key" a "Var" écrit ...? Y a-t-il un moyen de l'appeler directement comme OnKeyDown (Self, Vk_Return, Ssnone) (qui jette l'erreur dans le titre) ou devez-nous créer une sous-processus à appeler à partir de l'événement ONKEDOWDOWD et peut en tant que telle être utilisée ailleurs. ...?
@Just, vous ne devriez pas appeler des gestionnaires d'événements. Laissez le cadre faire ça. Si vous devez partager le code, mettez-le dans une méthode que vous appelez du gestionnaire d'événements.
J'ai effectivement utilisé la méthode Effectuer, en utilisant WM_KEYDOWDOW comme expéditeur et il semble fonctionner très bien. Merci!
@Just n'est pas la meilleure façon de le faire
Il en va de même pour les paramètres de sortie, out ou var donnera ce problème.
Comme David dit, le problème est dans le Si vous passez Un objet à un paramètre
Il n'y a pas de comportement non défini dans l'objet Pascal, il n'est disponible que pour les utilisateurs C. ttrouble (pointeur (aléatoire (Maxint))). Askfor (Explicit) Code>
@ user205376 Qu'allez-vous sur? !!
@David: Je pense que c'était une blague.
Clairement, j'ai besoin de sortir plus et d'arrêter de telle que rep-chasser !!
@User, bien que Delphi n'a pas de concept formel de comportement indéfini de la manière dont C et C ++ le font, c'est toujours un terme utile. La langue Delphi ne dit pas ce qui se passera dans la situation Mason démontrée. Si vous avez de la chance, votre programme s'écrasera immédiatement, mais vous pourriez avoir une corruption de données, une corruption de pile, voire aucune erreur. Il est inutile d'essayer de raisonner plus loin sur le comportement attendu du programme; Toutes sortes de choses pourraient arriver, et elles peuvent dépendre des facteurs extérieurs, y compris des versions du système d'exploitation, du compilateur et des bibliothèques.