Manque string

Signaler
Messages postés
69
Date d'inscription
jeudi 8 juin 2006
Statut
Membre
Dernière intervention
17 septembre 2010
-
 Utilisateur anonyme -
bonjours a tous est toute je ne sait pas si une personne pour et mèdes je télécharge une liste m3u est je la mes dans une listbox1 ensuite je prends la premier ligne de c été m3u est je la mes sur une listbox2 je garde que se que je veut avec se code


code
ListBox2.Items.Clear;
trigger := '#EXTINF'; // indicateur de ligne à traiter
for i := 0 to ListBox1.Items.Count-1 do begin
ligne := ListBox1.Items[i];
control := copy(ligne, 1, length(trigger));
if control <> trigger then
Continue; // Ce n'est pas une ligne à traiter, on passe à la suivante
PosVirgule := pos(',', ligne); // position d ela virgule dans la ligne
if PosVirgule = 0 then begin
ShowMessage('Erreur, Virgule pas trouvée');
exit;
end;
resultat := copy(ligne, PosVirgule+1, 99999); // Fin de la ligne
ListBox2.Items.Add(resultat);
end;

Est je fait de même avec la listbox3 pour récupéré la 2 ligne donc toutes les url qui sont afficher dans la 1 mes chez un problème je nez pas l url au complet je nés que tspSourire en biais /mafreebox.freebox.fr/freeboxtv/201 au mieux de sa rtspSourire en biais /mafreebox.freebox.fr/freeboxtv/201
je voudrais avoir l url entier savait vous comment faire pour récupéré le R quelle sigle ou lettre mettre pour que la virgule trouve le R merci a vous tous est toutes.
pour voir le problème je vous mes une capture d écrant.

9 réponses


Salut

Passe l'url ou tu récupère ta liste m3u stp, car je ne comprends rien à ta demande et ta capture d'écran : j'y vois rien ^^.

Merci
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
En français, la question ça donne quoi ?

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

heu, j'ai pas bien compris ta question, mais je te donne quand même un conseil "technique":

remplace:
copy(ligne, PosVirgule+1, 99999)
par
RightStr(ligne, lenght(ligne)-PosVirgule+1)

peut-être que AnsiStartsText ou AnsiPos te redrais aussi service.

bonne chance,
Messages postés
3827
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
16 décembre 2021
46
Salut,

 
@ Loda :
RightStr utilise Copy ...

par contre au lieu d'écrire :
copy(ligne, PosVirgule+1, 99999);

mettre :
copy(ligne, PosVirgule+1, High(Integer));

Bon un petit truc pour YoMane51100:
Sur la page de garde de Google à droite de la barre de recherche on peut lire Outils linguistiques. Il faut faire un click dessus puis tu écris ta question dans le langage de ton choix et tu le traduis en français, il faut absolument éviter les fautes d'orthographes sinon ça peut devenir très drôle. Pour certaines langues (Arabe, Italien, Espagnol) il faut d'abord traduire en Anglais puis en français.

en Allemand:
Auf der Bewachungsseite von Google rechts der Forschungsstange kann man linguistische Werkzeuge lesen. Man muß ein click oben machen dann du schreibt deine Frage in der Sprache deiner Wahl, und du übersetzt es auf französisch, man muß unbedingt die Orthographiefehler vermeiden, andernfalls kann das sehr sonderbar werden. Für bestimmte Sprachen (arabisch, italienisch, spanisch), man muß zuerst auf englisch übersetzen dann auf französisch.

en Anglais:
On the title page of Google on the right of the bar of research one can read linguistic Outils. A click should be made above then you write your question in the language of your choice and you translate it into French, it is absolutely necessary to avoid the spelling mistakes if not that can become very funny. For certain languages (Arab, Italian, Spanish) it is initially necessary to translate into French English then.

Encore une petite pour la route:

Texte original:
Vous pouvez utiliser Google pour écrire une question dans votre langage maternel et la traduire en français
en Anglais:
You can use Google to write a question in your maternal language and to translate it into French
en Allemand:
Sie können Google benutzen, um eine Frage in Ihrer Muttersprache zu schreiben und es auf französisch zu übersetzen

Voilà vous n'avez donc plus d'éxcuses ...

@+
Cirec
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
"If Count specifies more characters or array elements than are available, only the characters or elements from S[Index] to the end of S are returned."

dsl, j'avais pas fait gaffe au détail. N'empeche que "9999" c'est moche.
Messages postés
3827
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
16 décembre 2021
46
Et en francais :
Si le compte indique plus de caractères ou d'éléments de rangée qu'est disponible, seulement les caractères ou les éléments de S [index] à la fin de S sont retournés

"N'empeche que "9999" c'est moche."
 D'ou le High(Integer) à la place

@+
Cirec

Bon,

Pour ceux qui ne savent pas ce qu'est un fichier m3u : c'est un fichier texte qui contient une liste de fichiers sons avec leurs durées. Il est construit comme cela :

#EXTM3U
#EXTINF:159,Titre1
Fichier1.extension
#EXTINF:166,Titre2
Fichier2.extension

Yomane, je te mets sur la voie :

*Charger ton fichier m3u dans un TStringList;
*Soit i un integer : pour i allant de 1 à (count-1) :
-Si i est impaire, faire un copy en utilisant les caractères ':' et ',' et copier le résultant dans la listbox2.
-Si i est paire : tu copie tout dans la listbox1.

Maintenant à toi de jouer

PS : Il existe des sources faisant la meme chose sur DelphiFr.

Procedure MyM3U ( AFile : String);
Var
List : TStringList;
Nb : cardinal;
AInfo : String;
Begin
List:=TStringList.Create;
Try
List.LoadFromFile(AFile);
For Nb:=1 to (List.Count-1) do
Begin
If not odd(Nb) then ListBox1.add(List.Strings[Nb]) Else
Begin
AInfo:=List.Strings[Nb];
ListBox2.Add(Copy(AInfo,Pos(':',AInfo)+1,Pos(',',AInfo)-Pos(':',AInfo)-1));
ListBox3.Add(Copy(AInfo,Pos(',',AInfo)+1,length(AInfo)));
End;
End;
Finally
FreeAndNil(List);
End;
End;


Procedure Main.Button1Onclick(Sender : TObject);
Begin
If opendialog1.execute then MyM3U(Opendialog1.filename);
End;

Je n'ai pas testé mais ca devrait être bon.

Petite recttification

Procedure TForm1.MyM3U ( AFile : String);
Var
List : TStringList;
Nb : cardinal;
AInfo : String;
Begin
List:=TStringList.Create;
Try
List.LoadFromFile(AFile);
For Nb:=1 to (List.Count-1) do
Begin
If not odd(Nb) then ListBox1.items.add(List.Strings[Nb]) Else //ici
Begin
AInfo:=List.Strings[Nb]; ListBox2.items.Add(Copy(AInfo,Pos(':',AInfo)+1,Pos(',',AInfo)-Pos(':',AInfo)-1));
ListBox3.items.Add(Copy(AInfo,Pos(',',AInfo)+1,length(AInfo)));
End;
End;
Finally
FreeAndNil(List);
End;
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
If opendialog1.execute then MyM3U(Opendialog1.filename);
end;

J'ai testé le code : il fonctionne

Merci de valider le post stp