[Delphi] Expression régulière - nom de fichier

Expression régulière - nom de fichier [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 11-04-2006 à 14:17:37    

Bonjour à tous,
 
dans mon appli, je souhaiterais, via une expression régulière, vérifier qu'un nom de fichier est valide (zorro.exe est autorisé alors que zor\ro*..exe ne l'est pas par exemple).
 
J'ai bien trouvé une expression qui fonctionne mais, accrochez-vous, elle est un peu longue ... :
 
^(([a-zA-Z]:|\\)\\)?(((\.)|(\.\.)|([^\\/:\*\?"\|<>\. ](([^\\/:\*\?"\|<>\. ])|([^\\/:\*\?"\|<>]*[^\\/:\*\?"\|<>\. ]))?))\\)*[^\\/:\*\?"\|<>\. ](([^\\/:\*\?"\|<>\. ])|([^\\/:\*\?"\|<>]*[^\\/:\*\?"\|<>\. ]))?$
 
Si vous avez plus simple, je suis preneur.
 
Pour info, j'utilise le composant TRegExpr (http://regexpstudio.com/TRegExpr/TRegExpr.html)  
 
Laurent.

Reply

Marsh Posté le 11-04-2006 à 14:17:37   

Reply

Marsh Posté le 28-04-2006 à 02:39:59    

Je te propose une autre solution qui bloque les mauvais caratère dans un tedit
je sais pas si ca peu t'aider ?
 
 
 
procedure TEDITEUR.Edit1KeyPress(Sender: TObject; var Key: Char);
var flagnon:boolean;
var TempKey: Smallint;
begin
    TempKey := Smallint(Key);
flagnon:=true;
if  (key in ['a'..'z',#8]) then flagnon:=false;
if  (key in ['A'..'Z',#8]) then flagnon:=false;
if  (key in ['0'..'9',#8]) then flagnon:=false;
if tempkey=8 then flagnon:=false;
if flagnon then key := #0;
end;

Reply

Marsh Posté le 04-05-2006 à 21:00:11    

A priori seuls | : * < > \ / ? " sont interdits, tout le reste doit passer
Dans ton test tu ne laisses que les a-z et les chiffres, non ?
La regexp valide tout un chemin je présume, donc commençant par une lettre de lecteur, etc. Mais elle me semble quand même fort longue [:figti]


Message édité par antp le 04-05-2006 à 21:00:27

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed