1 variable pour 2 unit

Résolu
emkka Messages postés 26 Date d'inscription vendredi 7 avril 2006 Statut Membre Dernière intervention 1 juin 2008 - 12 mai 2006 à 20:38
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 13 mai 2006 à 02:40
bonjour,
je dispose de deux unit dans la premiere j'ai declaré une variable globale a:byte apres je lui affecte un nombre (ex: 5) maintenant je passe à la deuxieme unit et je cree un edit et je lui affect la variable "a" en utilisant biensur inttostr(a). Le probleme c'est que je trouve un '0' dans edit. Comment faire ?merci

8 réponses

emkka Messages postés 26 Date d'inscription vendredi 7 avril 2006 Statut Membre Dernière intervention 1 juin 2008
12 mai 2006 à 22:27
au fait j'ai trouver l'erreur, j'ai toucher au public et autre choses mais j'ai vu qu'il suffit juste d'ajouter uses unit1; dans implementation et c'est tout.
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
12 mai 2006 à 22:51
Salut,

il faut déclarer ta variable dans la section Interface de l'unit1:

unit Unit1;


interface


uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;


type
TForm1 = class (TForm)
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;


var
Form1: TForm1;
Ma_Variable : Byte;


implementation


{$R *.dfm}

...
Begin
Ma_Variable : = 125;
End;
...


<HR>

<HR>

unit Unit2;


interface


uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;


type
TForm2 = class (TForm)
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;


var
Form2: TForm1;
implementation


{$R *.dfm}

Uses Unit1;

...
Begin
Edit1.Text : = IntToStr(Ma_Variable);
End;
...

Evite déjà des variables locales d'une lettre
donne un nom plus explicite à tes variables.

@ Francky
Byte est compris dans l'interval de Integer
il n'y a donc pas transtypege a faire


<HR>

n'oubliez pas de cliquer sur Réponse Acceptée
si elle vous convient


<HR>

@+
Cirec
3
Utilisateur anonyme
12 mai 2006 à 22:22
Salut

Tu peux donner ton code stp pour que l'on puisse y voir clair ??

Merci
0
Utilisateur anonyme
12 mai 2006 à 22:23
Pardon je n'avais pas vu

a est un byte et tu fais inttostr(a). Là il y a un soucis non?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
12 mai 2006 à 22:33
Excuse moi mais tu peux m'explique comment tu fais pour faire inttostr(a) alors que a est une variables de type byte ???

C'est une erreur dans ta question ??
0
emkka Messages postés 26 Date d'inscription vendredi 7 avril 2006 Statut Membre Dernière intervention 1 juin 2008
12 mai 2006 à 22:38
ben essaye crée un edit et dans le programme met " edit1.text:=(inttostr(a)); " c'est tout!
0
Utilisateur anonyme
12 mai 2006 à 22:39
Fais attention avec ce genre de chose : on doit faire du transpytage normalement. La ca va ca passe mais tu risques de rencontrer des soucis a faire cela
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
13 mai 2006 à 02:40
non francky ... pas besoin de transtyper les entiers ...

IntToStr accepte aussi bien un byte, qu'un smallint, qu'un word ect... et meme le cardinal et le int64 ...

donc aucun probleme ...

le probleme vient plutot des float qui selon leurs precision ont des decimales erronées aprés cette precision... et aussi il ne se gere pas pareils au niveau des registre CPU ... meme si on ne fait pas de l'assembleur le programme lui reste compilé en assembleur ... donc ...

au mieux, ce que je prefere par dessus tout ... la fonction Format qui accepte tout les types et est aussi performantes que les fonction inttostr, floattostr ect...

edit1.caption := format('%d',[A]);


avantage on peu meme ajouter des 0 devant la valeur

edit1.caption := format('%.4d',[A]); { renvois : '0000'...'0255' }
0
Rejoignez-nous