cs_philpas
Messages postés77Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention 4 septembre 2008
-
6 mars 2006 à 10:13
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
6 mars 2006 à 23:51
Bonjour,
je voudrais savoir si il est possible de faire un string la même chose qu'un char?
je m'explique par un exemple:
avec un char (Key) on peut écrire: if Key in ['a','d','1','3'] then .....
Je voudrais faire la même chose mais avec un string (Machine)
Ex: if Machine in ['37','39','50','12'] then .....
Seulement ça ne marche pas car il demande un type ordinal. Y a t-il un moyen d'écrire la même chose mais en evitant de devoir écrire
if (machine='37') or (machine='39') or (machine='50') or (machine='12') or (etc....) then
ce qui est long et pas facilement lisible. Je préfèrerais écrire "si la machine est dans la liste alors"
ma question est peut être bête, mais pour l'instant la solution ne me saute pas aux yeux.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 6 mars 2006 à 23:51
on peu egalement faire cela :
function MachineValidator(machine : string) : boolean;
var x : integer;
const machinevalidname : array[0..4] of string = ('10','20','AB','XR,'54');
begin
result := false;
if machine = '' then exit;
for x := low(validemachinename) to high(validmachinename) do begin
if machine = validmachinename[x] then begin
result := true;
exit;
end;
end;
end;
mais c'est un code, bien que rapide sur des petits tableaux, serat longue sur de gros tableau (+ de 500 elements).
autre astuces un peu moins lourde :
function MachineValidator(machine : string) : boolean;
if machine = '' then exit;
if pos('#'+machine+'#',validmachinename) <> 0 then begin
result := true;
end;
end;
<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>