begin process at 2010 02 10 08:54:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > GETTOK STYLE

GETTOK STYLE


 Information sur la source

Note :
4,5 / 10 - par 4 personnes
4,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Texte Niveau :Débutant Date de création :18/05/2004 Date de mise à jour :09/08/2006 03:26:29 Vu :2 386

Auteur : OmbreNoir

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Comme je l'explique c'est une commande comme mIRC, un while qui recherche le mot voulu.
Je suis nouveau en delphi mais cette commande mes telement pratique, je l'ai cherché mais sa exploit.

Se qui faut pas oublier c'est que dans ma commande j'ai mis un if que le N dois être supérieur 1. Car avec un Copy normal tu peux très bien retrouvé le premier mot ou string voulus.

Pour avoir la commande:

var := Gettok('Ta Phrase',N,#32);
(Le N = au Nième  mots recherché
Et le #32 et biensûr le char numéro 32 .

Source

  • function GetTok(Phrase: string; Num: Integer; Char: string): string;
  • var
  • g1, g2 : string;
  • g4, g7, i : Integer;
  • begin
  • if (Num > 0) then // pour retour premier mot
  • begin
  • i := 1;
  • g2 := Phrase + Char; // pour retour dernier mot
  • while (i < Num) do
  • begin
  • g4 := Length(g2); { Nombre de caractère de la phrase }
  • g7 := Length(Copy(g2,1,Pos(Char,g2)-1)); { Nombre de caractère du Premier Mot }
  • g1 := Copy(g2,g7+2,Pos(#32,g2)+g4); { Phrase - le mot donnée }
  • g2 := g1;
  • i := i+1
  • end;
  • Result := Copy(g2, 1, Pos(Char, g2)-1); // pour retour 1er mot
  • end;
function GetTok(Phrase: string; Num: Integer; Char: string): string;
var
    g1, g2 : string;
    g4, g7, i : Integer;
begin
    if (Num > 0) then // pour retour premier mot
    begin
     i := 1;
    g2 := Phrase + Char; // pour retour dernier mot
    while (i < Num) do
    begin
     g4 := Length(g2);                       { Nombre de caractère de la phrase }
     g7 := Length(Copy(g2,1,Pos(Char,g2)-1)); { Nombre de caractère du Premier   Mot }
     g1 := Copy(g2,g7+2,Pos(#32,g2)+g4); { Phrase - le mot donnée }
     g2 := g1;
     i := i+1
    end;
    Result := Copy(g2, 1, Pos(Char, g2)-1); // pour retour 1er mot
end; 



 Historique

09 août 2006 03:22:42 :
Mise à jours: La function à été mis correctement.
09 août 2006 03:26:29 :
Juste optimiser un tout petit peu. Même si le code sert pas à grand monde et même si je suis rendu dans le c# si je revien dans ce langage j'aimerais avoir le bon code ;P

 Sources de la même categorie

Source avec Zip COMBINAISONS DE STRINGS par askil2000
Source avec Zip Source avec une capture RECONNAISSANCE DE CARACTÈRES (OCR) par Bacterius
Source avec Zip Source avec une capture NETTOYAGE AUTOMATIQUE DE NOMS DE FICHIERS par John Dogget
DISTANCE DE JARO-WINKLER par PoulpHunter
Source avec Zip BASE DE DONNÉE WIKI par thithony

Commentaires et avis

Commentaire de japee le 19/05/2004 17:20:55 administrateur CS

Ouais, pourquoi pas ?

Mais on n'obtient pas le dernier mot du String non plus...
Donc, si l'on veut garder la fonction telle quelle, tout en désirant que le premier mot ET le dernier soient retournés :

function GetTok(Phrase: string; Num: Integer; Char: string): string;
var
    g1 : string;
    g2 : string;
    g4 : Integer;
    g7 : integer;
    i : integer;
begin
    //if (Num &gt; 1) then
    if (Num &gt; 0) then // pour retour premier mot
    begin
     i := 1;
    //g2 := Phrase;
    g2 := Phrase + Char; // pour retour dernier mot
    while (i &lt; Num) do
    begin
     g4 := Length(g2);                       { Nombre de caractère de la phrase }
     g7 := Length(Copy(g2,1,Pos(Char,g2)-1)); { Nombre de caractère du Premier   Mot }
     g1 := Copy(g2,g7+2,Pos(#32,g2)+g4); { Phrase - le mot donnée }
     g2 := g1;
     i := i+1
    end;
    //Result := Copy(g1,1,Pos(Char,g1)-1);
    Result := Copy(g2, 1, Pos(Char, g2)-1); // pour retour 1er mot
end;

Commentaire de OmbreNoir le 19/05/2004 21:27:50

Ouin j'avais oublier je l'avais mis dans mon script par la suite

Commentaire de cirec le 09/08/2006 14:45:32 administrateur CS

Salut,

Voici la méthode que j'utilise :

Procedure ExtractText(Separateur, Ligne: String; Result: TStringList);
Var TmpText         : String;
Begin
  If Result = Nil Then Exit;
  While Pos(Separateur, Ligne) > 0 Do
    Begin
      TmpText := Copy(Ligne, 1, Pos(Separateur, Ligne) - 1);
      If TmpText <> EmptyStr Then Result.Add(TmpText);
      Ligne := Copy(Ligne, Pos(Separateur, Ligne) + 1, High(Integer));
    End;
  If Ligne <> EmptyStr Then Result.Add(Ligne);
End;


// Utilisation tu mets un ComboBox et un Button sur ta form et tu compètes comme ceci :

Var TS : TStringList;
Const strTMP = 'Essai de découpage de phrases pour DelphiFr sur CS [www.DelphiFr.com]';

procedure TForm1.Button1Click(Sender: TObject);
begin
  Ts := TStringList.Create;
  ExtractText(' ', strTMP, ts);
  ComboBox1.Items.AddStrings(ts);
  TS.Free;
end;

Et grâce aux TStingList ont a accès à tout moment au nombre de mots "TS.Count" et bien sur aux mots "TS[2] == 'découpage'"
Le premier mot à pour index 0 : TS[0] == 'Essai'

Donc si tu veux parcourir toute la liste dans un Memo par exemple:
Var I : Integer;
For I := 0 to TS.Count - 1 do Memo1.Lines.add(TS[I]);

Je pense que c'est plus pratique puisqu'on fait appel à ExtractText qu'une seule fois et on obtient tous les mots. Alors que ta fonction nécessite un appel par mot recherché et que se passe t'il si la phrase contient 5 mots et l’on fait : GetTok(Phrase, 10, #32) ???

Bonne prog et
@+
Cirec
  

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales