begin process at 2012 02 07 05:52:02
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > COMPOSANT DE SPLIT

COMPOSANT DE SPLIT


 Information sur la source

Note :
Aucune note
Catégorie :Texte Classé sous :split, string Niveau :Débutant Date de création :16/05/2006 Date de mise à jour :16/05/2006 16:49:38 Vu / téléchargé :4 231 / 8 670

Auteur : Harvester_

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

 Description

Tout petit composant de split.


 Conclusion

On peut stocker au maximum 255 mot ( J'ai fixé cette limite, car je ne connais pas les capacités d'une array ).

Exemple d'utilisation du composant :

procedure TForm1.Button1Click(Sender: TObject);
var Split1:TSplit; i:integer;
begin
Split1:=TSplit.Create(Form1);
Spl it1.WordsContainer:=Split1.Split(edit1.text);
for i:=0 to Split1.Count do
showmessage(Split1.WordsContainer[i]);
end;

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

16 mai 2006 16:49:38 :
Ajout de la fonction Clear.

 Sources du même auteur

EXTRAIRE UN MOT À PARTIR DE SA POSITION

 Sources de la même categorie

Source avec Zip Source avec une capture TABLEAU INFO SAVE INI par quentinix
Source avec Zip TIBWORD: EDITEUR ORIENTE LANGUE TIBÉTAINE par fredelem
Source avec Zip Source avec une capture POSTIT INFOS par dubois77
Source avec Zip Source avec une capture STREAM STRINGWRITER... UNE MICRO-LIBRAIRIE POUR ÉCRIRE DES C... par LaDentDeLait
Source avec Zip COMBINAISONS DE STRINGS par askil2000

 Sources en rapport avec celle ci

CODAGE EN BASE64 DE CHAÎNES UNICODE par gta126
Source avec Zip Source avec une capture STREAM STRINGWRITER... UNE MICRO-LIBRAIRIE POUR ÉCRIRE DES C... par LaDentDeLait
Source avec Zip COMBINAISONS DE STRINGS par askil2000
LIBRAIRIE DE FONCTIONS DE GESTION DE SOUS-CHAINES. par MAURICIO
Source avec Zip Source avec une capture DELPHI : PROCEDURE SPLIT SIMILAIRE A LA FONCTION EPONYME EN ... par FENETRES

Commentaires et avis

Commentaire de f0xi le 17/05/2006 02:55:19 administrateur CS

mmm ... bonne idée ... mais je crains que le compo soit
1 inutile
2 lourd

premierement, les TStrings possede une propriété Delimiter et DelimitedText qui permet de "spliter" les chaines contenues.

deuxiement, regarde la fonction "chainepos" ici dans les codes sources, je pense qu'elle vas t'interressé car elle permet de recuperer n'importe qu'elle partie d'un texte selon un delimiteur qui peut etre aussi bien un caractere qu'un mots ou encore une phrase ...

Commentaire de japee le 17/05/2006 11:25:14 administrateur CS

Intéressant.

Mais pourquoi vouloir en faire un composant ?

Ton code est un peu redondant :

function TSplit.Split(Str:string):TWordsContainer;
var i,a,b:integer;
begin
a:=0;
b:=0;
str:=str+' ';//On ajoute un espace sinon le dernier mot ne sera pas reconnu car
// la string se fini par un caractère.
for i:=0 to length(str) do
begin
if str[i]=' ' then //Si le char testé est un espace
begin
if Copy(str,a,i-a)=' ' then // On ajoute le mot en se repérant avec la dernière
a:=a+(i-a) // position de fin de mot ( ou de début de string ).
else
begin
result[b]:=Copy(str,a,i-a);
a:=a+(i-a);//On ajoute la position de la fin du dernier mot trouvé.
b:=b+1;//On passe à l'enregistrement suivant.
end;
end;
end;
end;

Sans toucher à l'essentiel (j'ai renommé les variables pour m'y retrouver), et en respectant le concept, j'aurais fait :

function TSplit.Split(Str: string): TWordsContainer;
var i, Previous, Index: Integer;
begin
  Previous := 0;
  Index := 0;
  Str := Str + ' ';
  for i := 0 to Length(Str) do
  begin
    if Str[i] = ' ' then
    begin
      Result[Index] := Copy(Str, Previous + 1, i - Previous - 1);
      Index := Index + 1;
      Previous := i;
    end;
  end;
end;

Bonne prog' :p

Commentaire de japee le 17/05/2006 12:00:18 administrateur CS

Ah, au fait, si tu veux utiliser un tableau dynamique :

type TWordsContainer = array of string;

function TSplit.Count: Integer;
begin
  Result := High(WordsContainer);
end;

function TSplit.Split(Str: string): TWordsContainer;
var i, Previous, Index: Integer;
begin
  Previous := 0;
  Index := 0;
  Str := Str + ' ';
  SetLength(Result, 1);  // <- tu définis la longueur
  for i := 0 to Length(Str) do
  begin
    if Str[i] = ' ' then
    begin
      Result[Index] := Copy(Str, Previous + 1, i - Previous - 1);
      Index := Index + 1;
      SetLength(Result, Index + 1); // <- tu définis la longueur
      Previous := i;
    end;
  end;
end;

Tu peux remplacer la méthode "function TSplit.Count: Integer;", qui devient inutile, par une propriété accessible.

Bonne prog' :p

Commentaire de Harvester_ le 17/05/2006 15:36:46

Merci bien, je ne me sert pas souvent des array et je ne connaissais pas cette petite "technique" toute bête !

Commentaire de cirec le 17/05/2006 16:12:36 administrateur CS

Salut,

Une StringList n'aurait elle pas fait l'affaire ?

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

Utilisation :
procedure TForm1.Button1Click(Sender: TObject);
Var aList : TStringList;
begin
  aList := TStringList.Create;
  ExtractText(' ', 'Le forum de CodeS SourceS à changé', aList);
  Memo1.Lines.Clear;
  Memo1.Lines.AddStrings(aList);
  aList.Free;
end;

@+
Cirec

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Split String [ par oregon ] Bonsoir, a tous je suis un peux bloqué sur un projet. Enfaite j'aimerai diviser une string en 4 ou 2 enfin peux importe afin de les séparer sans delim format décimal (FloatFormat, Precision, Digits) ? masque (##,#0.000E+#) [ par zwyx ] [size=50][color=white]FloatFormat,Precision,Digits,Masque[/color][/size] Bonjour à tous, Je bloque dans l'écriture d'une bête routine. Savoir qu'on a mémoire locale et mémoire globale [ par Gerard ] Bonjour, J'ai entrepris la refonte de mon serveur - qui marche par ailleurs très bien - une centaine de joueurs (de bridge) par jour dans l'objectif s ToString ou toString, telle est la question.... [ par CLio908 ] Bonjour Je teste[^^happy13] un programme qui utilise TParser (http://www.delphifr.com/codes/DEBUT-PARSEUR-HTML-AVEC-TPARSER_34324.aspx) mais ça coinc manipulation de string [ par alcat2002 ] j'ai un string du style: 0___0_0____0___00_____0________0__ 'O' -> la goutte est tombée '_' -> la goutte n' est pas tombée et j'aimerai trouver u executer une fonction en delphi [ par inegliz ] bonjour ! j'ai une fonction getusername(en delphi6) que j'ai mis dans l'unite principale du projet , je dois l'executer a partir de mes procedures , j String Search-Function in Listbox [ par sarssor ] Salut j ai teste cet code. sa marche mais il y a un Problème. le code peut trouver un seul String dans chaque ligne Example: je voudrais charcher sur Split - Delimiter Espace par défaut ? [ par Dpx26000 ] Bonjour à tous, Tout d'abord, et comme toujours je m'excuse d'avance si j'ai raté un sujet qui aurait pu m'éviter de créer celui-ci par la fonction r Wake On Lan - XP [ par gta126 ] Bonjour à tous, Voilà j'ai réalisé un petit code pour le wake on lan qui fonctionne parfaitement bien sur seven mais pas moyen de le faire aller sur Buff binaires et blobs [ par solilog ] [size=100]Bonsoir tous, Je ne suis pas fier de vous demander ca depuis le temps que je "bricole" avec D. Mais vous êtes là pour ça, merci. Le prob: U


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,499 sec (3)

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