sterne29
Messages postés6Date d'inscriptionmardi 31 janvier 2006StatutMembreDernière intervention 6 février 2006
-
31 janv. 2006 à 16:14
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
3 févr. 2006 à 19:47
Bonjour,
Débutant (en Delphi 3)
j'ai un message d'erreur lors de l'excecution du code ci-dessous.
Const
TabloLigne1: array[1..3] of String = ('Edit_L1_C1_G1_01','Edit_L1_C2_G1_02','Edit_L1_C3_G1_03');
TabloLigne2: array[1..3] of String = ('Edit_L2_C1_G1_10','Edit_L2_C2_G1_11','Edit_L2_C3_G1_12');
procedure TForm1.TestClick(Sender: TObject);
Var Tablo:Tcomponent;essai:String[2]
begin
if essai='Mu' then Tablo:=TabloLigne1 else Tablo:=TabloLigne2;
if Tedit(FindComponent(Tablo[2])).text[1] = '1' then ... end;
end;
Je pense que Tablo ne doit pas etre de type Tcomponent mais je ne trouve pas la solution. J'ai aussi essayé avec String. Le programme s'execute correctement si je ne n'utilise pas la variable Tablo et que je remplace par cette ligne :
if Tedit(FindComponent(TabloLigne1[2])).text[1] = '1' then ... end;
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 31 janv. 2006 à 23:58
Tu commets quelques erreurs qui peuvent avoir pour effet immédiat de provoquer une magnifique AV.
Voir commentaires avec le code revu :
type
//Déclaration d'un type tableau de 3 chaines
TTablo = array [1..3] ofstring;
const
TabloLigne1: TTablo = ('Edit_L1_C1_G1_01', 'Edit_L1_C2_G1_02',
'Edit_L1_C3_G1_03');
TabloLigne2: TTablo = ('Edit_L2_C1_G1_10', 'Edit_L2_C2_G1_11',
'Edit_L2_C3_G1_12');
procedure TForm1.TestClick(Sender: TObject);
var
Tablo: TTablo;
essai: string[2];
AComp: TComponent;
begin
{ta variable essai est vide à ce niveau !!
Donc Tablo est toujours à TabloLigne2}
if essai = 'Mu'then
Tablo := TabloLigne1
else
Tablo := TabloLigne2;
//Recherche d'un composant existant
AComp := FindComponent(Tablo[2]);
//S'il existe et que c'est bien un TEdit...
if Assigned(AComp) and (AComp is TEdit) then
begin
//là seulement tu peux transtyper AComp
if Tedit(AComp).Text[1] = '1'then
//...
end;
end;
<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 3 févr. 2006 à 19:47
Avec la fonction FindComponent il est possible de retrouver un composant.
Hélas, il n'existe aucune fonction pour retrouve une variable. De toutes façons, ça n'aurait pas vraiment de sens dans le cas d'un langage compilé.
Tu peux toujours régler le problème de la façon suivante :
if 'TabloLigne'+IntToStr(i) = 'TabloLigne1' then
Tablo := Tablo1
else
Tablo := Tablo2;
<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.