Envoyer variable

Résolu
nethacker Messages postés 288 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 12 octobre 2011 - 21 sept. 2007 à 19:57
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 22 sept. 2007 à 18:11
bonsoir,
mon programme consiste à envoyer un texte variable, enfin pas tout le texte variable mais juste une partie qui change, et en fait c'est un programme qui eteint à distance l'ordi avec un commentaire et une durée !
donc le texte envoyé ca sera ca :
arreter>durée>commentaire

et le serveur en recevant ce texte doit distinguer la durée du commentaire ^^
voila merci d'avance !

4 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
22 sept. 2007 à 01:29
Salut,

Ceci devrait te convenir ...

Deux fonctions qui permettent de récuperer la partie gauche et la partie droite
d'un texte délimité par un caractère
<hr size= "2" width="100%" /> [ Code ]
<hr size ="2" width= "100%" />
{
Function GetStrScan(Const aStr : String; Ch : Char): String;
Renvoie la partie gauche d'une chaine "aStr" délimitée par un caractère "Ch"
}
Function GetStrScan(Const aStr : String; Ch : Char): String;
Var P1, P2 : PByte;
    Len    : Integer;
Begin
  SetLength(Result, Length(aStr));
  P1 : = PByte(aStr);
  P2 := PByte(Result);
  Len := 0;
  While (P1^ <> $0) And (P1^ <> Ord(Ch)) Do  Begin
    P2^ : = P1^;
    Inc(P1);
    Inc(P2);
    Inc(Len);
  End;
  If Len <> Length(aStr) Then
    SetLength(Result, Len);
End;

{
Function GetStrRScan(Const aStr : String; Ch : Char): String;
Renvoie la partie droite d'une chaine "aStr" délimitée par un caractère "Ch"
}
Function GetStrRScan(Const aStr : String; Ch : Char): String;
Var P1, P2 : PByte;
    Len    : Integer;
    FndChr : Boolean;
Begin
  SetLength(Result, Length(aStr));
  P1 := PByte(aStr);
  P2 := PByte(Result);
  Len := 0;
  FndChr := False;
  While P1^ <> $0 Do  Begin
    If P1^ = Ord(Ch) Then  Begin
      FndChr := True;
      Inc(P1);
      Continue;
    End ;
    If  FndChr Then  Begin
      P2^ : = P1^;
      Inc(P2);
      Inc(Len);
    End;
    Inc(P1);
  End;
  If Len <> Length(aStr) Then
    SetLength(Result, Len);
End;

<hr size= "2" width="100%" /> [ Utilisation ]
<hr size ="2" width= "100%" />

{
 Exemple d'utilisation de GetStrScan et GetStrRScan
}
procedure TForm1.Button1Click(Sender: TObject);
Const
  aStr = '5.00@l''ordinateur va s''éteindre dans : ';
begin
  {Récupère ce qui ce trouve à droite de "@"}
  Label1.Caption : = GetStrRScan(aStr, '@');
 {Récupère ce qui ce trouve à gauche de "@"}
  Label2.Caption := GetStrScan(aStr, '@');
end ;

 
@+
Cirec

<hr size ="2" />
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
22 sept. 2007 à 18:11
Tu ne peux avoir cette erreur que si tu essayes
de passer au paramètre Ch autre chose qu'un Type Char !!!!

Sinon il n'y a aucun problème
" Ceci est un éclairage rapide mais si tu as ce genre de soucis  je te conseil
de revoir les bases ... tu as du sauter un truc "

Un Char est un caractère
Var Ch : Char;Ch :'@';    Ch := #64;  <-- Fonctionne
Ch := '5.00@'  <-- Erreur  Ch ne peut contenir qu'un seul caractère
Label2.Caption := GetStrScan(aStr, '@');  <-- Fonctionne

ici '@' est automatiquement " transtypé " en Char par le compilateur
Et
Label2.Caption : = GetStrScan(aStr, Ch);   <-- Fonctionne

Un String est une suite de X caractères
Var Sa, Sb : String;Sa : '@';   =  Sa := #64;  Ici Sa ne contient qu'un seul cacartèremais n'est pas un Char pour autant

Sb := '5.00';             Ici Sb contient 4 caractèresSb :Sb + #64           on en ajoute 1 (4 + 1 5 )

Label2.Caption : = GetStrScan(aStr, Sa);  Erreur Type incompatible  String et Char


Pour utiliser une variable de Type String dans les deux procedures (GetStrScan & GetStrRScan)
Il faut acceder au caractère qui nous interesse ...

Solution:
Accède au premier caractère de Sa 
Label2.Caption := GetStrScan(aStr, Sa[1]);    <-- Fonctionne
Et
Accède au 5 ° caractère de Sb
Label2.Caption : = GetStrScan(aStr, Sb[5]);    <-- Fonctionne

@+
Cirec

<hr siz="" />
3
nethacker Messages postés 288 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 12 octobre 2011
22 sept. 2007 à 14:42
je vous remercie beaucoup !
0
nethacker Messages postés 288 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 12 octobre 2011
22 sept. 2007 à 15:33
y'a un problème de types ^^

<hr size= "2" width="100%" /> Function GetStrScan(Const aStr : String; Ch : Char): String;
<hr size ="2" width="100%" />Label2.Caption := GetStrScan(aStr, '@');
<hr size="2" width="100%" />donc @ est un string alors qu'on doit entrer un Char !
comment convertir le String en Char pour être traité, puis reconvertir en string !
0
Rejoignez-nous