2009-01-27 8 views
2

je besoin d'un utilisateur d'être en mesure d'entrer une URL, et je voudrais vous assurer qu'il est aussi saine que possible. Des choses comme vérifier qu'il y a http: // à l'avant, pas de double-points, peut-être valide TLD, slash à la fin (je dois ajouter la dernière page).code Delphi pour aseptiser une URL saisie par l'utilisateur

Je figure cela est une telle exigence commune qu'il doit déjà exister. Suggestions?

[edit:] Pour être clair, cela est une exigence d'exécution dans un service Windows. Le but est de tirer le meilleur parti de l'URL lue depuis la configuration, plutôt que de valider ce que l'utilisateur a tapé. Essentiellement, si je peux ajuster l'URL et la faire fonctionner, alors c'est ce que j'aimerais faire. Le téléchargement sera un fichier spécifique, donc si tout va mal, il ne se trompe pas d'un autre serveur.

Répondre

3

Avez-vous eu un coup d'œil à « What is the best regular expression to check if a string is a valid URL »? Ce n'est pas spécifique à Delphi, mais cela pourrait vous aider à démarrer.

+0

Hmm, une idée intéressante, merci, mais je préfère "auto-corriger" l'URL au lieu de simplement la valider. Mais le valider à l'entrée pourrait être bon à faire aussi. – mj2008

+0

Au lieu de la correction automatique, vous pouvez simplement afficher un signe visuel indiquant que l'URL saisie n'est pas correcte. par exemple. désactivez le bouton OK ou définissez l'arrière-plan d'édition sur rouge. –

+0

Mais avant de pouvoir corriger automatiquement, vous devez savoir quoi corriger, vous avez donc besoin d'une sorte de validation. Une bonne regex vous dira si le protocole est manquant ou s'il se termine par une barre oblique. Utilisez les groupes de capture - s'ils sont vides - vous devez ajouter ce qui manque. – Vegar

1

Peut-être quelques-unes des suggestions here pourrait aider.

+0

Cela peut être une bonne option - diviser l'URL en bits qui existent, puis reconstituer avec des parties manquantes. – mj2008

4

Que diriez-vous d'utiliser la fonction PathIsURL dans l'API Windows?

Mise à jour: Ceci est déjà inclus dans le fichier Delphi RTL de l'unité ShLwApi.