Split String

Signaler
Messages postés
6
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
4 août 2010
-
Messages postés
6
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
4 août 2010
-
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 delimiteur est ce possible auriez vous une idée de comment je pourrais faire car la je ne vois pas


PS : Exemple

Chaine : String;
chaine := 'saluttoicava ?';
chaine1 = 'salutt';
chaine2 = 'oicava?';

Sachant que le nombre de caractère dans la chaine est indeterminé a la basse merci a vous de m'aider

6 réponses

Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Tu peux utiliser Copy pour tronquer ta chaîne ... voici la fonction qui va couper "Str" au caractère en position X (inclusif), en deux chaînes "A" et "B" :
procedure Split(const Str: String; const X: Integer; var A, B: String);
begin
 A := Copy(Str, 1, X);
 B := Copy(Str, X, Length(Str) - X);
end;

Mais précise mieux ton problème car je vois mal ce que tu recherches, ça me semble un peu difficile, conceptuellement, à généraliser à un nombre de découpages quelconques. Peux-tu nous éclairer en disant combien de paramètres l'hypothétique fonction Split prend en entrée et sortie ?

Cordialement, Bacterius !
Messages postés
6
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
4 août 2010

Enfaite réellement ce que je cherche a faire c'est couper un fichier en deux.


Donc ma Buffer aura un nombre inconnus de données voila tout peut être que je m'y prendre tout simplement mal
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Ah ! Alors en fait, il faudrait alors ouvrir le fichier source en mémoire, ouvrir un deuxième fichier de la taille de la deuxième moitié, et déplacer un bout du fichier source dans le deuxième fichier. Ca se fait très efficacement en passant par les fichiers mappés

Cordialement, Bacterius !
Messages postés
6
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
4 août 2010

Hmm ok. Pas tres clair pour un débutant comme moi. Tu ne connaitrais pas un nom de source qui emploie quelque une de c'est méthode malgres mais recherche je tombe toujours a coter de la plaque. Je cherche enfaité a couper ma string en deux car je fait un readbyte donc je pensais que couper la variable en deux aurait été possible

Salut,

Bacterius t'avait mis sur la voix : il suffisait plus qu'à chercher un minimum et tu aurais la réponse (Faut penser à chercher un peu jeune homme quand même hein)

Sur une Form : 3 TEdit et un TButton

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit2.Text:=Copy(Edit1.Text,0,Length(Edit1.Text) Div 2);
  Edit3.Text:=Copy(Edit1.Text,Length(Edit1.Text) Div 2+1,Length(Edit1.Text));
end;

Cette procédure te coupe un mot en deux.
Messages postés
6
Date d'inscription
mercredi 8 novembre 2000
Statut
Membre
Dernière intervention
4 août 2010

Merci a toi de ton aide... Donc je suis arriver actuellement a ce morceaux de code



i1 := round((Length(Buffer) div 11)+1);
i2 := i1*2;
i3 := i1*3;


var1 := Copy(Buffer,0,i1);
var2 := Copy(Buffer,(i1+1),i1);
var3 := Copy(Buffer,(i2+1),i1);
var4 := Copy(Buffer,(i3+1),i1);


J'aimerai automatiser tout sa pour pouvoir changer par exemple la division

J'avais penser a sa


Division := round(Length(Buffer) div 40;

for i:= 0 to 30 do
begin
CutBuffer := Copy(Buffer, (Division*i+1), Division);

end;


Mais sa fonctionne pas du tout je patoge la