begin process at 2010 02 09 23:59:16
  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é :3 787 / 8 655

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 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

 Sources en rapport avec celle ci

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
FONCTION SPLIT par crackspider7676
Source avec Zip DISTANCE LEVENSHTEIN (DISTANCE ENTRE DEUX CHAINES) par DevNul

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

Sous Class [ par delphi ] Salut je voudrais savoir comment passer une sous class avec delphi ??par exemple avec vb ça se fait comme ça :Public Declare Function ShowWindow Lib " lancement d'un fichier au démarrage de l'application [ par Pierre ] Comment est-il possible, en Delphi, de lancer un fichier (.txt par exemple comme je l'indique ci-après) au démarrage sans que la TForm apparaisse ? Av limitation de sendtext ? [ par Xavier ] Bonjour,Comme la fonction sendtext prend en parametre un string et sachant qu'un string peut faire 2 Mo, pensez-vous qu'il est raisonnable d'utiliser Pb avec TListView et TListItem [ par Biose ] Salut à tous, Voilà mon problème, je me sert d'une ListView et à ma premiere action, je rempli ma premiere colonne ://ici "ori" à une valeur String et Prendre les deux derniers caractères d'une string... [ par ELECTRORESiSTiK ] Salut,Pourriez-vous m'expliquer comment prendre les deux dernier caractères d'une string ?Merci d'avance!Bonne Soirée String déjà existante... [ par finipe ] Bonjour à tous ! J'ai deux problèmes à vous soumettre :- Dans un programme je passe des items d'une combobox à une listbox, d'un simple clique de bout String et Retour chariot [ par lomig ] J'ai une chaine de caractere constituée de deux mots que je veuxséparer par un retour chariot et ensuite insérer cette chaine dans unfichier texte. Si Impression String [ par teamours ] J'aurais voulu savoir si tu connaissais le moyen d'imprimer le contnue de cet editbox Copier un Fichier dans une string [ par lomig ] Question a la con: comment fait-on pour copier un fichier (texte) dans une chaine (string)?? string de plus de 255 caracteres?:( [ par aliong ] Bonjour!comme vous le remarkerer je suis newbies donc ne m'en voulez po pour cette kestion ki va etre pour la plupart d'entre vous de la rigolade alor


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

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