Forums développeurs windev
Création fichier texte - Version imprimable

+- Forums développeurs windev (http://tunidev.net)
+-- Forum : Forums Développeurs WINDEV (http://tunidev.net/Forum-Forums-D%C3%A9veloppeurs-WINDEV)
+--- Forum : Forum windev 11 & plus récentes (http://tunidev.net/Forum-Forum-windev-11-plus-r%C3%A9centes)
+--- Sujet : Création fichier texte (/Thread-Cr%C3%A9ation-fichier-texte)

Pages : 1 2


Création fichier texte - bruno rodrigues - 06-06-2017

Bonjour à tous,

je cherche à créer un fichier texte à partir d'un dossier comportant des fichiers vidéos, tout fonctionne bien si le dossier comporte par exemple 1500 fichiers, mais là j'en ai un qui en a plus de 30 000 et j'ai un plantage de l'application à chaque fois, je dois surement faire une erreur alors voici le code utilisé :

fSupprime("c:\shows palette\Importationvidéo.txt")
fCrée("c:\shows palette\Importationvidéo.txt")

sFichier est une chaîne UNICODE
sUnFichier est une chaîne UNICODE

// Ouvre le sélecteur de fichiers
sFichier = fSélecteur("", "", "Sélectionnez un fichier...", "Tous les fichiers (*.*)" + TAB + "*.*", "*.*", fselOuvre + fselMulti + fselExiste + fselChange + fCheminUNICODE)

SI sFichier = "" ALORS RETOUR
fOuvre("c:\shows palette\Importationvidéo.txt",foEcriture)

POUR TOUTE CHAÎNE sUnFichier DE sFichier
    nIDFichier est un entier
    nIDFichier = fOuvre("c:\shows palette\Importationvidéo.txt", foEcriture)
    SI nIDFichier <> -1 ALORS
        fEcritLigne(nIDFichier,sUnFichier)
        fFerme(nIDFichier)
    SINON
        Erreur()
    FIN
FIN

Si quelqu'un a une idée sur ce qu'il faut faire pour remédier à ce problème je lui suis déjà reconnaissant.

Cordialement.
Bruno


RE: Création fichier texte - Samifred - 06-06-2017

Bonjour,

Tu as fait une trace sur la variable sUnFichier "Trace(sUnFichier)" il donne quoi ?
Et pourquoi tu fermes après fEcritLigne() ?
...

Cordialement


RE: Création fichier texte - bruno rodrigues - 06-06-2017

(06-06-2017, 01:55 PM)Samifred a écrit : Bonjour,

Tu as fait une trace sur la variable sUnFichier "Trace(sUnFichier)" il donne quoi ?
Et pourquoi tu fermes après fEcritLigne() ?
...

Cordialement

Bonjour Samifred,

Je viens de faire un test avec juste ceci :

fSupprime("c:\shows palette\Importationvidéo.txt")
fCrée("c:\shows palette\Importationvidéo.txt")
TableSupprimeTout(TABLEImportationvidéo)

sFichier est une chaîne UNICODE

// Ouvre le sélecteur de fichiers
sFichier = fSélecteur("", "", "Sélectionnez un fichier...", "Tous les fichiers (*.*)" + TAB + "*.*", "*.*", fselOuvre + fselMulti + fselExiste + fselChange + fCheminUNICODE)

Si prends par exemple 500 titres ça marche mais si je fais ctrl-a pour sélectionner tout le dossier (38000 fichiers), cela plante et j'avoue ne pas comprendre, c'est sur un disque externe en usb je ne sais pas si cela peut expliquer le problème.


RE: Création fichier texte - Samifred - 06-06-2017

C'est pas un problème de lire sur un disque dur externe.
Tu parles de fichier texte puis de table... ???

Cela peut être aussi une question de mémoire.

Quelle version as-tu de Windev ?


RE: Création fichier texte - bruno rodrigues - 06-06-2017

(06-06-2017, 03:48 PM)Samifred a écrit : C'est pas un problème de lire sur un disque dur externe.
Tu parles de fichier texte puis de table... ???

Cela peut être aussi une question de mémoire.

Quelle version as-tu de Windev ?

Je suis avec windev22 , en fait je crée un fichier texte qui ensuite est importé dans une table mémoire.


RE: Création fichier texte - bruno rodrigues - 06-06-2017

(06-06-2017, 03:52 PM)bruno rodrigues a écrit :
(06-06-2017, 03:48 PM)Samifred a écrit : C'est pas un problème de lire sur un disque dur externe.
Tu parles de fichier texte puis de table... ???

Cela peut être aussi une question de mémoire.

Quelle version as-tu de Windev ?

Je suis avec windev22 , en fait je crée un fichier texte qui ensuite est importé dans une table mémoire.
Peut être faut-il travailler par lot pour ne pas surcharger mais là je ne sais pas comment faire


RE: Création fichier texte - Samifred - 06-06-2017

(06-06-2017, 03:52 PM)bruno rodrigues a écrit :
(06-06-2017, 03:48 PM)Samifred a écrit : C'est pas un problème de lire sur un disque dur externe.
Tu parles de fichier texte puis de table... ???

Cela peut être aussi une question de mémoire.

Quelle version as-tu de Windev ?

Je suis avec windev22 , en fait je crée un fichier texte qui ensuite est importé dans une table mémoire.

Je verrais la chose ainsi....  de mémoire, je n'ai pas testé.

J'ai simplement modifier ton code d'origine.

Code :
sFichier est une chaîne UNICODE
sUnFichier est une chaîne UNICODE
nIDFichier est un entier

// fSupprime("c:\shows palette\Importationvidéo.txt")
// fCrée("c:\shows palette\Importationvidéo.txt")

// Ouvre le sélecteur de fichiers
sFichier = fSélecteur("", "", "Sélectionnez un fichier...", "Tous les fichiers (*.*)" + TAB + "*.*", "*.*", fselOuvre + fselMulti + fselExiste + fselChange + fCheminUNICODE)
SI sFichier = "" ALORS RETOUR

// Supprime et crée le fichier à l'ouverture
nIDFichier = fOuvre(sFichier, foCréation+foEcriture)

// Lecture du disque
POUR TOUTE CHAÎNE sUnFichier DE sFichier
    SI nIDFichier <> -1 ALORS
        fEcritLigne(nIDFichier,sUnFichier)
    SINON
        fFerme(nIDFichier)
        Erreur()
    FIN
FIN

fFerme(nIDFichier)

Maintenant tu peux remplir directement un fichier HF puis l'afficher dans une table (fichier ou mémoire).

...


RE: Création fichier texte - bruno rodrigues - 06-06-2017

(06-06-2017, 05:33 PM)Samifred a écrit :
(06-06-2017, 03:52 PM)bruno rodrigues a écrit :
(06-06-2017, 03:48 PM)Samifred a écrit : C'est pas un problème de lire sur un disque dur externe.
Tu parles de fichier texte puis de table... ???

Cela peut être aussi une question de mémoire.

Quelle version as-tu de Windev ?

Je suis avec windev22 , en fait je crée un fichier texte qui ensuite est importé dans une table mémoire.

Je verrais la chose ainsi....  de mémoire, je n'ai pas testé.

J'ai simplement modifier ton code d'origine.

Code :
sFichier est une chaîne UNICODE
sUnFichier est une chaîne UNICODE
nIDFichier est un entier

// fSupprime("c:\shows palette\Importationvidéo.txt")
// fCrée("c:\shows palette\Importationvidéo.txt")

// Ouvre le sélecteur de fichiers
sFichier = fSélecteur("", "", "Sélectionnez un fichier...", "Tous les fichiers (*.*)" + TAB + "*.*", "*.*", fselOuvre + fselMulti + fselExiste + fselChange + fCheminUNICODE)
SI sFichier = "" ALORS RETOUR

// Supprime et crée le fichier à l'ouverture
nIDFichier = fOuvre(sFichier, foCréation+foEcriture)

// Lecture du disque
POUR TOUTE CHAÎNE sUnFichier DE sFichier
    SI nIDFichier <> -1 ALORS
        fEcritLigne(nIDFichier,sUnFichier)
    SINON
        fFerme(nIDFichier)
        Erreur()
    FIN
FIN

fFerme(nIDFichier)

Maintenant tu peux remplir directement un fichier HF puis l'afficher dans une table (fichier ou mémoire).

...
Je viens de tester et voici le message d'erreur : vous avez demandé à manipuler le fichier N°1 qui n'a pas été ouvert par fouvre, fcrée ou fmemouvre.

Encore merci de t'intéresser à mon problème


RE: Création fichier texte - Samifred - 06-06-2017

Oui en effet je vois l'erreur...

Je regarde ça demain, je ferais un test. En faite il s'agit simplement de lire le nom des fichiers sur un disque
et de remplir un fichier externe ou HF.

...


RE: Création fichier texte - bruno rodrigues - 07-06-2017

(06-06-2017, 08:50 PM)Samifred a écrit : Oui en effet je vois l'erreur...

Je regarde ça demain, je ferais un test. En faite il s'agit simplement de lire le nom des fichiers sur un disque
et de remplir un fichier externe ou HF.

...
Je viens de faire ceci et cela marche même avec plus de 30 000 titres :

TableSupprimeTout(TABLEImportationvidéo)
UnFichier, ResListeFichier sont des chaînes
sRépertoire est une chaîne
sRépertoire = fRepSélecteur("", "")
dossier est une chaîne = sRépertoire+"\*.*"
ResListeFichier = fListeFichier(dossier, frRécursif+frInterruptible)

POUR TOUTE CHAÎNE UnFichier DE ResListeFichier SEPAREE PAR RC
    TableAjoute(TABLEImportationvidéo, UnFichier)
FIN
POUR TOUTE LIGNE DE TABLEImportationvidéo
    TABLEImportationvidéo.COL_Vidéos = fExtraitChemin(TABLEImportationvidéo.COL_Chemin, fFichier)
FIN

il me reste juste un truc à mettre en place je spécifie : dossier est une chaîne = sRépertoire+"\*.*" et j'aimerai indiquer les format avi et mp4 seulement
merci pour ton aide Samifred