![]() |
| |||||||
| S'inscrire | FAQ | Membres | Calendrier | Recherche | Messages du jour | Marquer les forums comme lus |
![]() |
| LinkBack | Outils de la discussion | Modes d'affichage |
| |||
| Bonjour, Chaque mois je dois transmettre un fichier texte par mail pour cela j'utilise vfpwinsock. Cela fonctionne parfaitement jusqu'a une certaine taille de fichier, puis selon la taille j'ai les erreurs suivantes: -> Dans winsock_sendmail Alines déclenche une erreur car j'ai plus de 65000 lignes (erreur 31 je crois) -> Dans winsock_sendmail erreur 1234 indices hors limite -> Sur les très gros fichiers Erreur 1903 (chaine trop longue) dans Send c'est lors de la création de This.data Je renseigne dans la classe smtp_host,from, from name,subject et attachment. Pour l'instant je vais limité mon fichier texte à 20000 lignes et lorsqu'il sera plus volumineux je l'enverrai par morceaux (pour renseignement c'est un fichier texte de 162 caractères par lignes. sur un fichier de 32712 lignes, this.data en contient 64642 au moment du Alines) Y a t'il un moyen avec vfpwinsock pour détecter si le fichier est trop volumineux pour l'envoi? Cordialement Karine |
| | ||||
| ||||
| |
| |||
| Avec quelle version de VFP ? Avec quelle version de VFP winsock ? Cordialement Francis "Karine" <info_sansspam***sansspam-soft-lan.com> a écrit dans le message de news:OCIxp2J7IHA.1080***TK2MSFTNGP06.phx.gbl... > Bonjour, > > Chaque mois je dois transmettre un fichier texte par mail pour cela > j'utilise vfpwinsock. > Cela fonctionne parfaitement jusqu'a une certaine taille de fichier, puis > selon la taille j'ai les erreurs suivantes: > -> Dans winsock_sendmail Alines déclenche une erreur car j'ai plus de 65000 > lignes (erreur 31 je crois) > -> Dans winsock_sendmail erreur 1234 indices hors limite > -> Sur les très gros fichiers Erreur 1903 (chaine trop longue) dans Send > c'est lors de la création de This.data > Je renseigne dans la classe smtp_host,from, from name,subject et attachment. > Pour l'instant je vais limité mon fichier texte à 20000 lignes et lorsqu'il > sera plus volumineux je l'enverrai par morceaux > (pour renseignement c'est un fichier texte de 162 caractères par lignes. sur > un fichier de 32712 lignes, this.data en contient 64642 au moment du Alines) > Y a t'il un moyen avec vfpwinsock pour détecter si le fichier est trop > volumineux pour l'envoi? > > Cordialement > > Karine > > |
| |||
| Bonjour, VFP 8 vfpwinsock 1.17 Cordialement Karine "Francis FAURE (www.atoutfox.org)" <francis.faure[***]dord.com> a écrit dans le message de news: %23LZleqK7IHA.2336***TK2MSFTNGP03.phx.gbl... > Avec quelle version de VFP ? > Avec quelle version de VFP winsock ? > Cordialement > Francis > > > > > "Karine" <info_sansspam***sansspam-soft-lan.com> a écrit dans le message de > news:OCIxp2J7IHA.1080***TK2MSFTNGP06.phx.gbl... >> Bonjour, >> >> Chaque mois je dois transmettre un fichier texte par mail pour cela >> j'utilise vfpwinsock. >> Cela fonctionne parfaitement jusqu'a une certaine taille de fichier, puis >> selon la taille j'ai les erreurs suivantes: >> -> Dans winsock_sendmail Alines déclenche une erreur car j'ai plus de > 65000 >> lignes (erreur 31 je crois) >> -> Dans winsock_sendmail erreur 1234 indices hors limite >> -> Sur les très gros fichiers Erreur 1903 (chaine trop longue) dans Send >> c'est lors de la création de This.data >> Je renseigne dans la classe smtp_host,from, from name,subject et > attachment. >> Pour l'instant je vais limité mon fichier texte à 20000 lignes et > lorsqu'il >> sera plus volumineux je l'enverrai par morceaux >> (pour renseignement c'est un fichier texte de 162 caractères par lignes. > sur >> un fichier de 32712 lignes, this.data en contient 64642 au moment du > Alines) >> Y a t'il un moyen avec vfpwinsock pour détecter si le fichier est trop >> volumineux pour l'envoi? >> >> Cordialement >> >> Karine >> >> > > |
| |||
| C'est une idée.Je teste et Voir si le prestataire à qui j'envoie les données est OK. Karine "Jean à Grenoble" <jsm.maurice***wanadoo.fr> a écrit dans le message de news: eHXd6hK7IHA.2224***TK2MSFTNGP05.phx.gbl... > et pourquoi pas le zipper avant de l'envoyer ? > > -- > Jean MAURICE > Grenoble - France - Europe > www.atoutfox.org > www.aedtf.org |
| |||
| Bonjour, J'ai compressé le fichier avec vfpcompression. Tout est OK. Le fichier obtenu passe sans problème en piece jointe avec vfpwinsock. Merci pour l'idée Karine "Jean à Grenoble" <jsm.maurice***wanadoo.fr> a écrit dans le message de news: eHXd6hK7IHA.2224***TK2MSFTNGP05.phx.gbl... > et pourquoi pas le zipper avant de l'envoyer ? > > -- > Jean MAURICE > Grenoble - France - Europe > www.atoutfox.org > www.aedtf.org |
| |||
| Gregory, Hum, je suis d'accord dans le principe et conceptuellement dans tes propos... Mais.... pour répondre je ne passe justement PAS par une propriété d'une classe (expres) Car le probleme est justement la limitation des propriétés de VFP qui ne support pas plus de 16 Méga si tu veux t'en convaincre : essayes le code suivant : o=CREATEOBJECT("truc") o.Property = "" FOR i=1 TO 17*1024 ? i o.Property = o.Property + REPLICATE("1",1024) next DEFINE CLASS truc as Custom Property = "" ENDDEFINE prends un café, mais ça va peter à la tronche lorsque i = 16384 le probleme actuel de vfp winsock /send mail est donc bien que j'utilise des propriétés et subit la limitation de 16Mo Pascal m'a donné une idée et la solution pour contourner (passer par des variables), mais j'avoue ne pas avoir pris le temps de tout re implementer en variables car je me dit : d'une part : qu'un mail de 16Mo .... c'est une erreur de conception... a mon humble avis... d'autre part : la majorité des opérateurs internet de laisse pas passer un mail d'un tel taille (en France) ceci dit je travail sur la 1.18 de vfp_winsock elle supportera + que 16mo (pour le principe) mais je vais devoir passer par variables et fichiers temporaires, enfin : je sais qua'vant qu'il y a des trucs a optimiser en terme de temps de traitement Je vais peut être rajouter une propriété "Zip_Attachment" pour zipper avant d"expédier si tu as un peu de temps : je peux te donner des exemples si tu veux m'aider a optimiser et contribuer ? Cordialement Francis "Gregory" <Gregory***nowhere.com> a écrit dans le message de news: ORSFLNO7IHA.3976***TK2MSFTNGP06.phx.gbl... > Francis, > > Au sujet de Winsock - alines - suggestion > > (1) Au lieu d'etre un chaine de car, j'utiliserais un objet collection > > (2) this.data = this.data + .... + CRLF > this.data.Add(...) && pas de CRLF > > (3) l'envoi, au lieu de alines, tu parcours la collection, par item, tu > envoies le contenu + CRLF > > Comme cela, je crois que le probleme de alines() sera disparu > -- > Gregory > __ > "Francis FAURE (www.atoutfox.org)" <francis.faure[***]dord.com> wrote in > message news:%23LZleqK7IHA.2336***TK2MSFTNGP03.phx.gbl... >> Avec quelle version de VFP ? >> Avec quelle version de VFP winsock ? >> Cordialement >> Francis >> >> >> >> >> "Karine" <info_sansspam***sansspam-soft-lan.com> a écrit dans le message de >> news:OCIxp2J7IHA.1080***TK2MSFTNGP06.phx.gbl... >>> Bonjour, >>> >>> Chaque mois je dois transmettre un fichier texte par mail pour cela >>> j'utilise vfpwinsock. >>> Cela fonctionne parfaitement jusqu'a une certaine taille de fichier, >>> puis >>> selon la taille j'ai les erreurs suivantes: >>> -> Dans winsock_sendmail Alines déclenche une erreur car j'ai plus de >> 65000 >>> lignes (erreur 31 je crois) >>> -> Dans winsock_sendmail erreur 1234 indices hors limite >>> -> Sur les très gros fichiers Erreur 1903 (chaine trop longue) dans Send >>> c'est lors de la création de This.data >>> Je renseigne dans la classe smtp_host,from, from name,subject et >> attachment. >>> Pour l'instant je vais limité mon fichier texte à 20000 lignes et >> lorsqu'il >>> sera plus volumineux je l'enverrai par morceaux >>> (pour renseignement c'est un fichier texte de 162 caractères par lignes. >> sur >>> un fichier de 32712 lignes, this.data en contient 64642 au moment du >> Alines) >>> Y a t'il un moyen avec vfpwinsock pour détecter si le fichier est trop >>> volumineux pour l'envoi? >>> >>> Cordialement >>> >>> Karine >>> >>> >> >> > |
| |||
| Bonjour, Pour ma part le fichier posant problème était loin de faire 16Mo. Il en fait à peine 4Mo. Mais Alines ne supporte pas plus de 65000 lignes et dans mon cas cette limite est dépassée. En fait selon la taille du fichier il y a trois erreurs différentes : pour les fichiers qui sont juste à la limite des 65000 lignes j'ai l'erreur 31 déclenchée par alines, les fichiers un peu plus gros j'ai eu l'erreur 1234 sur la boucle qui suit Alines et sur les fichiers très gros une erreur 1903 bien avant sur la construction de This.Date. Dans ce dernier cas je pense que c'est la limite de 16 Mo. Dans mon cas la solution est venu en mettant en oeuvre l'idée emmise ici, je zippe le fichier avant de l'envoyé et mon fichier de 4Mo n'en fait plus que 700Ko. Pour d'autres utilitaires j'ai ajouté une case à cocher "Compresser la pièce jointe" et libre à chacun de le faire ou non. Encore merci à tous pour votre réactivité Cordialement Karine "Francis Faure" <francis.faure_***_dord.com> a écrit dans le message de news: uTNGA9O7IHA.3692***TK2MSFTNGP05.phx.gbl... > Gregory, > > Hum, > je suis d'accord dans le principe et conceptuellement dans tes propos... > Mais.... > > pour répondre > je ne passe justement PAS par une propriété d'une classe (expres) > > Car le probleme est justement la limitation des propriétés de VFP qui > ne support pas plus de 16 Méga > > si tu veux t'en convaincre : essayes le code suivant : > o=CREATEOBJECT("truc") > o.Property = "" > FOR i=1 TO 17*1024 > ? i > o.Property = o.Property + REPLICATE("1",1024) > next > DEFINE CLASS truc as Custom > Property = "" > ENDDEFINE > > prends un café, > mais ça va peter à la tronche lorsque i = 16384 > > > le probleme actuel de vfp winsock /send mail est donc bien que j'utilise > des propriétés et subit la limitation de 16Mo > > Pascal m'a donné une idée et la solution pour contourner (passer par des > variables), > mais j'avoue ne pas avoir pris le temps de tout re implementer en > variables > car je me dit : > d'une part : qu'un mail de 16Mo .... c'est une erreur de > conception... a mon humble avis... > d'autre part : la majorité des opérateurs internet de laisse pas > passer un mail d'un tel taille (en France) > > ceci dit je travail sur la 1.18 de vfp_winsock elle supportera + que 16mo > (pour le principe) mais je vais devoir passer par variables et fichiers > temporaires, > enfin : je sais qua'vant qu'il y a des trucs a optimiser en terme de > temps de traitement > > Je vais peut être rajouter une propriété "Zip_Attachment" pour zipper > avant d"expédier > > > si tu as un peu de temps : je peux te donner des exemples si tu veux > m'aider a optimiser et contribuer ? > > Cordialement > Francis > > > > > "Gregory" <Gregory***nowhere.com> a écrit dans le message de news: > ORSFLNO7IHA.3976***TK2MSFTNGP06.phx.gbl... >> Francis, >> >> Au sujet de Winsock - alines - suggestion >> >> (1) Au lieu d'etre un chaine de car, j'utiliserais un objet collection >> >> (2) this.data = this.data + .... + CRLF >> this.data.Add(...) && pas de CRLF >> >> (3) l'envoi, au lieu de alines, tu parcours la collection, par item, tu >> envoies le contenu + CRLF >> >> Comme cela, je crois que le probleme de alines() sera disparu >> -- >> Gregory >> __ >> "Francis FAURE (www.atoutfox.org)" <francis.faure[***]dord.com> wrote in >> message news:%23LZleqK7IHA.2336***TK2MSFTNGP03.phx.gbl... >>> Avec quelle version de VFP ? >>> Avec quelle version de VFP winsock ? >>> Cordialement >>> Francis >>> >>> >>> >>> >>> "Karine" <info_sansspam***sansspam-soft-lan.com> a écrit dans le message >>> de >>> news:OCIxp2J7IHA.1080***TK2MSFTNGP06.phx.gbl... >>>> Bonjour, >>>> >>>> Chaque mois je dois transmettre un fichier texte par mail pour cela >>>> j'utilise vfpwinsock. >>>> Cela fonctionne parfaitement jusqu'a une certaine taille de fichier, >>>> puis >>>> selon la taille j'ai les erreurs suivantes: >>>> -> Dans winsock_sendmail Alines déclenche une erreur car j'ai plus de >>> 65000 >>>> lignes (erreur 31 je crois) >>>> -> Dans winsock_sendmail erreur 1234 indices hors limite >>>> -> Sur les très gros fichiers Erreur 1903 (chaine trop longue) dans >>>> Send >>>> c'est lors de la création de This.data >>>> Je renseigne dans la classe smtp_host,from, from name,subject et >>> attachment. >>>> Pour l'instant je vais limité mon fichier texte à 20000 lignes et >>> lorsqu'il >>>> sera plus volumineux je l'enverrai par morceaux >>>> (pour renseignement c'est un fichier texte de 162 caractères par >>>> lignes. >>> sur >>>> un fichier de 32712 lignes, this.data en contient 64642 au moment du >>> Alines) >>>> Y a t'il un moyen avec vfpwinsock pour détecter si le fichier est trop >>>> volumineux pour l'envoi? >>>> >>>> Cordialement >>>> >>>> Karine >>>> >>>> >>> >>> >> > > |
| |||
| Salut Gregory, C'est quoi l'idée ? Pour le fichier source à jour : http://www.xfrx.fr/vfpwinsock/SendMaildownload.asp Sinon passe moi ton email Depuis cette version 1.17, je travail sur la 1.18, mais en gros pour l'instant il te faut corriger : function Lire_Base_Registre(p_quoi) local v_handle, v_account, v_retour function Lire_Base_Registre(p_quoi) local v_handle, v_account, v_retour v_retour = "" && v1.18 oubli d'initialiser la variable Cordialement "Gregory" <Gregory***nowhere.com> a écrit dans le message de news:%23v22bJY7IHA.5024***TK2MSFTNGP03.phx.gbl... > Bon Francis, > > J'ai bu le cafe que tu m'as offert - c'est gentil - merci > > Je fais ton test (4*1024) : 11 sec > Je fais mon test: 0.1 sec > > local obj, i > obj = createobject('truc') > > for i=1 to 4*1024 > obj.Property = m.obj.Property + REPLICATE("1",1024) > next > > > > Si tu m'envoies ton winsock - avec ton bug corrige !- (je crois que j'ai la > version 1.16), je vais integrer mon truc dedans > > je ne toucherai qu'a this.DATA - je me perds dans ce grand spaghetti > > Karine: > > Es-tu prete a faire le test enVFP8 ? Je n'ai que la 9 > -- > Gregory > __ > "Francis Faure" <francis.faure_***_dord.com> wrote in message > news:uTNGA9O7IHA.3692***TK2MSFTNGP05.phx.gbl... > > Gregory, > > > > Hum, > > je suis d'accord dans le principe et conceptuellement dans tes propos... > > Mais.... > > > > pour répondre > > je ne passe justement PAS par une propriété d'une classe (expres) > > > > Car le probleme est justement la limitation des propriétés de VFP qui > > ne support pas plus de 16 Méga > > > > si tu veux t'en convaincre : essayes le code suivant : > > o=CREATEOBJECT("truc") > > o.Property = "" > > FOR i=1 TO 17*1024 > > ? i > > o.Property = o.Property + REPLICATE("1",1024) > > next > > DEFINE CLASS truc as Custom > > Property = "" > > ENDDEFINE > > > > prends un café, > > mais ça va peter à la tronche lorsque i = 16384 > > > > > > le probleme actuel de vfp winsock /send mail est donc bien que j'utilise > > des propriétés et subit la limitation de 16Mo > > > > Pascal m'a donné une idée et la solution pour contourner (passer par des > > variables), > > mais j'avoue ne pas avoir pris le temps de tout re implementer en > > variables > > car je me dit : > > d'une part : qu'un mail de 16Mo .... c'est une erreur de > > conception... a mon humble avis... > > d'autre part : la majorité des opérateurs internet de laisse pas > > passer un mail d'un tel taille (en France) > > > > ceci dit je travail sur la 1.18 de vfp_winsock elle supportera + que 16mo > > (pour le principe) mais je vais devoir passer par variables et fichiers > > temporaires, > > enfin : je sais qua'vant qu'il y a des trucs a optimiser en terme de > > temps de traitement > > > > Je vais peut être rajouter une propriété "Zip_Attachment" pour zipper > > avant d"expédier > > > > > > si tu as un peu de temps : je peux te donner des exemples si tu veux > > m'aider a optimiser et contribuer ? > > > > Cordialement > > Francis > > > > > > > > > > "Gregory" <Gregory***nowhere.com> a écrit dans le message de news: > > ORSFLNO7IHA.3976***TK2MSFTNGP06.phx.gbl... > >> Francis, > >> > >> Au sujet de Winsock - alines - suggestion > >> > >> (1) Au lieu d'etre un chaine de car, j'utiliserais un objet collection > >> > >> (2) this.data = this.data + .... + CRLF > >> this.data.Add(...) && pas de CRLF > >> > >> (3) l'envoi, au lieu de alines, tu parcours la collection, par item, tu > >> envoies le contenu + CRLF > >> > >> Comme cela, je crois que le probleme de alines() sera disparu > >> -- > >> Gregory > >> __ > >> "Francis FAURE (www.atoutfox.org)" <francis.faure[***]dord.com> wrote in > >> message news:%23LZleqK7IHA.2336***TK2MSFTNGP03.phx.gbl... > >>> Avec quelle version de VFP ? > >>> Avec quelle version de VFP winsock ? > >>> Cordialement > >>> Francis > >>> > >>> > >>> > >>> > >>> "Karine" <info_sansspam***sansspam-soft-lan.com> a écrit dans le message > >>> de > >>> news:OCIxp2J7IHA.1080***TK2MSFTNGP06.phx.gbl... > >>>> Bonjour, > >>>> > >>>> Chaque mois je dois transmettre un fichier texte par mail pour cela > >>>> j'utilise vfpwinsock. > >>>> Cela fonctionne parfaitement jusqu'a une certaine taille de fichier, > >>>> puis > >>>> selon la taille j'ai les erreurs suivantes: > >>>> -> Dans winsock_sendmail Alines déclenche une erreur car j'ai plus de > >>> 65000 > >>>> lignes (erreur 31 je crois) > >>>> -> Dans winsock_sendmail erreur 1234 indices hors limite > >>>> -> Sur les très gros fichiers Erreur 1903 (chaine trop longue) dans > >>>> Send > >>>> c'est lors de la création de This.data > >>>> Je renseigne dans la classe smtp_host,from, from name,subject et > >>> attachment. > >>>> Pour l'instant je vais limité mon fichier texte à 20000 lignes et > >>> lorsqu'il > >>>> sera plus volumineux je l'enverrai par morceaux > >>>> (pour renseignement c'est un fichier texte de 162 caractères par > >>>> lignes. > >>> sur > >>>> un fichier de 32712 lignes, this.data en contient 64642 au moment du > >>> Alines) > >>>> Y a t'il un moyen avec vfpwinsock pour détecter si le fichier est trop > >>>> volumineux pour l'envoi? > >>>> > >>>> Cordialement > >>>> > >>>> Karine > >>>> > >>>> > >>> > >>> > >> > > > > > |
| |||
| Gregory Exemple de code a optimizer : En première lecture, d'après toi, qu'est-ce qui est le plus rapide ? Comment mieux faire ? *----------------------------------------- * * but insérer CRLF tous les 60 Caractères * * source : 1 chaine (lsSource) * Destination : un tableau (lTab[1,2]) *----------------------------------------- CLEAR SET SAFETY off #define CRLF CHR(13)+CHR(10) lsSource = REPLICATE("1234567890", 30*1024) DIMENSION lTab[1,2] *----------------------------------------- * Syntaxe 1 liStart= SECONDS() lTab[1,2] = "" FOR i = 1 TO LEN(lsSource) STEP 76 lTab[1,2] = lTab[1,2] + SUBSTR(lsSource,i,76) + CRLF NEXT ? seconds() - liStart *----------------------------------------- * Syntaxe 2 liStart= SECONDS() lsDestination ="" FOR i = 1 TO LEN(lsSource) STEP 76 lsDestination = lsDestination + SUBSTR(lsSource,i,76) + CRLF NEXT lTab[1,2] = lsDestination ? seconds() - liStart *----------------------------------------- * Syntaxe 3 liStart= SECONDS() lsDestination ="" v_tmp = "c:\temp\test.txt" =strtofile(lsSource, v_tmp, .F.) v_f = Fopen(v_tmp) do while not Feof(v_f) lsDestination = lsDestination + Fgets(v_f, 76) + CRLF enddo =Fclose(v_f) erase (v_tmp) lTab[1,2] = lsDestination ? seconds() - liStart |
| |||
| > Une autre idee - qui marcherait aussi, est de passer par fwrite() et > fread() Oui je pense que c'est mieux et plus simple. "Gregory" <Gregory***nowhere.com> a écrit dans le message de news:ehnQ9$Y7IHA.4536***TK2MSFTNGP04.phx.gbl... > Francis, > > Le probleme avec vfp sont les string. A peu pres toute operation sur un > string copie le string. > Alors ta boucle.... fait chauffer le cpu > > Je suis en train de me faire une toute petite classe (StringLong - > inspiration: Cafe Long) qui utilise quelques api > (heapAlloc, HeapRealloc, HeapFree, rtlMoveMemory) > L'idee est toute simple - reste a l'implementer sans bugs > > Une autre idee - qui marcherait aussi, est de passer par fwrite() et > fread() > > (Mon email, tu l'as - atoutfox) Je passerai par le lien > > Je commence de suite > -- > Gregory > __ > "Francis FAURE (www.atoutfox.org)" <francis.faure[***]dord.com> wrote in > message news:u8avTzY7IHA.2416***TK2MSFTNGP02.phx.gbl... > > Salut Gregory, > > > > C'est quoi l'idée ? > > > > Pour le fichier source à jour : > > http://www.xfrx.fr/vfpwinsock/SendMaildownload.asp > > Sinon passe moi ton email > > > > Depuis cette version 1.17, je travail sur la 1.18, mais en gros pour > > l'instant il te faut corriger : > > > > function Lire_Base_Registre(p_quoi) > > local v_handle, v_account, v_retour > > > > function Lire_Base_Registre(p_quoi) > > local v_handle, v_account, v_retour > > v_retour = "" && v1.18 oubli d'initialiser la variable > > Cordialement > > > > > > > > > > > > > > > > "Gregory" <Gregory***nowhere.com> a écrit dans le message de > > news:%23v22bJY7IHA.5024***TK2MSFTNGP03.phx.gbl... > >> Bon Francis, > >> > >> J'ai bu le cafe que tu m'as offert - c'est gentil - merci > >> > >> Je fais ton test (4*1024) : 11 sec > >> Je fais mon test: 0.1 sec > >> > >> local obj, i > >> obj = createobject('truc') > >> > >> for i=1 to 4*1024 > >> obj.Property = m.obj.Property + REPLICATE("1",1024) > >> next > >> > >> > >> > >> Si tu m'envoies ton winsock - avec ton bug corrige !- (je crois que j'ai > > la > >> version 1.16), je vais integrer mon truc dedans > >> > >> je ne toucherai qu'a this.DATA - je me perds dans ce grand spaghetti > >> > >> Karine: > >> > >> Es-tu prete a faire le test enVFP8 ? Je n'ai que la 9 > >> -- > >> Gregory > >> __ > >> "Francis Faure" <francis.faure_***_dord.com> wrote in message > >> news:uTNGA9O7IHA.3692***TK2MSFTNGP05.phx.gbl... > >> > Gregory, > >> > > >> > Hum, > >> > je suis d'accord dans le principe et conceptuellement dans tes > >> > propos... > >> > Mais.... > >> > > >> > pour répondre > >> > je ne passe justement PAS par une propriété d'une classe (expres) > >> > > >> > Car le probleme est justement la limitation des propriétés de VFP > >> > qui > >> > ne support pas plus de 16 Méga > >> > > >> > si tu veux t'en convaincre : essayes le code suivant : > >> > o=CREATEOBJECT("truc") > >> > o.Property = "" > >> > FOR i=1 TO 17*1024 > >> > ? i > >> > o.Property = o.Property + REPLICATE("1",1024) > >> > next > >> > DEFINE CLASS truc as Custom > >> > Property = "" > >> > ENDDEFINE > >> > > >> > prends un café, > >> > mais ça va peter à la tronche lorsque i = 16384 > >> > > >> > > >> > le probleme actuel de vfp winsock /send mail est donc bien que > >> > j'utilise > >> > des propriétés et subit la limitation de 16Mo > >> > > >> > Pascal m'a donné une idée et la solution pour contourner (passer par > >> > des > >> > variables), > >> > mais j'avoue ne pas avoir pris le temps de tout re implementer en > >> > variables > >> > car je me dit : > >> > d'une part : qu'un mail de 16Mo .... c'est une erreur de > >> > conception... a mon humble avis... > >> > d'autre part : la majorité des opérateurs internet de laisse pas > >> > passer un mail d'un tel taille (en France) > >> > > >> > ceci dit je travail sur la 1.18 de vfp_winsock elle supportera + que > > 16mo > >> > (pour le principe) mais je vais devoir passer par variables et fichiers > >> > temporaires, > >> > enfin : je sais qua'vant qu'il y a des trucs a optimiser en terme de > >> > temps de traitement > >> > > >> > Je vais peut être rajouter une propriété "Zip_Attachment" pour zipper > >> > avant d"expédier > >> > > >> > > >> > si tu as un peu de temps : je peux te donner des exemples si tu veux > >> > m'aider a optimiser et contribuer ? > >> > > >> > Cordialement > >> > Francis > >> > > >> > > >> > > >> > > >> > "Gregory" <Gregory***nowhere.com> a écrit dans le message de news: > >> > ORSFLNO7IHA.3976***TK2MSFTNGP06.phx.gbl... > >> >> Francis, > >> >> > >> >> Au sujet de Winsock - alines - suggestion > >> >> > >> >> (1) Au lieu d'etre un chaine de car, j'utiliserais un objet collection > >> >> > >> >> (2) this.data = this.data + .... + CRLF > >> >> this.data.Add(...) && pas de CRLF > >> >> > >> >> (3) l'envoi, au lieu de alines, tu parcours la collection, par item, > >> >> tu > >> >> envoies le contenu + CRLF > >> >> > >> >> Comme cela, je crois que le probleme de alines() sera disparu > >> >> -- > >> >> Gregory > >> >> __ > >> >> "Francis FAURE (www.atoutfox.org)" <francis.faure[***]dord.com> wrote in > >> >> message news:%23LZleqK7IHA.2336***TK2MSFTNGP03.phx.gbl... > >> >>> Avec quelle version de VFP ? > >> >>> Avec quelle version de VFP winsock ? > >> >>> Cordialement > >> >>> Francis > >> >>> > >> >>> > >> >>> > >> >>> > >> >>> "Karine" <info_sansspam***sansspam-soft-lan.com> a écrit dans le > >> >>> message > >> >>> de > >> >>> news:OCIxp2J7IHA.1080***TK2MSFTNGP06.phx.gbl... > >> >>>> Bonjour, > >> >>>> > >> >>>> Chaque mois je dois transmettre un fichier texte par mail pour cela > >> >>>> j'utilise vfpwinsock. > >> >>>> Cela fonctionne parfaitement jusqu'a une certaine taille de fichier, > >> >>>> puis > >> >>>> selon la taille j'ai les erreurs suivantes: > >> >>>> -> Dans winsock_sendmail Alines déclenche une erreur car j'ai plus > >> >>>> de > >> >>> 65000 > >> >>>> lignes (erreur 31 je crois) > >> >>>> -> Dans winsock_sendmail erreur 1234 indices hors limite > >> >>>> -> Sur les très gros fichiers Erreur 1903 (chaine trop longue) dans > >> >>>> Send > >> >>>> c'est lors de la création de This.data > >> >>>> Je renseigne dans la classe smtp_host,from, from name,subject et > >> >>> attachment. > >> >>>> Pour l'instant je vais limité mon fichier texte à 20000 lignes et > >> >>> lorsqu'il > >> >>>> sera plus volumineux je l'enverrai par morceaux > >> >>>> (pour renseignement c'est un fichier texte de 162 caractères par > >> >>>> lignes. > >> >>> sur > >> >>>> un fichier de 32712 lignes, this.data en contient 64642 au moment du > >> >>> Alines) > >> >>>> Y a t'il un moyen avec vfpwinsock pour détecter si le fichier est > > trop > >> >>>> volumineux pour l'envoi? > >> >>>> > >> >>>> Cordialement > >> >>>> > >> >>>> Karine > >> >>>> > >> >>>> > >> >>> > >> >>> > >> >> > >> > > >> > > >> > > > > > |
| |||
| exact c'est en passant par un fichier temporaire que c'est 1000 fois plus rapide... étonnant non ? Il y a moyen de faire mieux ? Cordialement "Gregory" <Gregory***nowhere.com> a écrit dans le message de news:uSOlx%23Z7IHA.1080***TK2MSFTNGP06.phx.gbl... > Sachant que > > (1) un SUBSTR copie le string ENTIER sur le stack a chaque fois > (2) x = x + 'a' a ete optimise pour faire un append 'en place' > (3) un access a un tableau est plus lent qu'un acces a une simple variable > > Quant a ton exemple, les 3 cas: pas beaucoup de difference > > MAIS, il faut mesurer. Ainsi j'ai > (1) change (fois 5) : lsSource = REPLICATE("1234567890", 30*1024*5) > (2) Ajoute un quatrieme cas, avec un fichier Out + a la fin FileToStr(Out) > > Resultats > (1) 78.9 sec (access tableau apparemment x = x +'a' pas optimise > (2) 5.039 sec (access tableau) > (3) 0.749 ( x = x +'a' optimise + pas de SUBSTR) > (4) 0.374 (pas de x = x + 'a') > > > > > -- > Gregory > __ > "Francis FAURE (www.atoutfox.org)" <francis.faure[***]dord.com> wrote in > message news:eJW21ZZ7IHA.1952***TK2MSFTNGP02.phx.gbl... > > Gregory > > > > Exemple de code a optimizer : > > > > En première lecture, d'après toi, qu'est-ce qui est le plus rapide ? > > Comment mieux faire ? > > > > > > > > *----------------------------------------- > > * > > * but insérer CRLF tous les 60 Caractères > > * > > * source : 1 chaine (lsSource) > > * Destination : un tableau (lTab[1,2]) > > *----------------------------------------- > > CLEAR > > SET SAFETY off > > #define CRLF CHR(13)+CHR(10) > > lsSource = REPLICATE("1234567890", 30*1024) > > DIMENSION lTab[1,2] > > > > *----------------------------------------- > > * Syntaxe 1 > > liStart= SECONDS() > > lTab[1,2] = "" > > FOR i = 1 TO LEN(lsSource) STEP 76 > > lTab[1,2] = lTab[1,2] + SUBSTR(lsSource,i,76) + CRLF > > NEXT > > ? seconds() - liStart > > > > > > *----------------------------------------- > > * Syntaxe 2 > > liStart= SECONDS() > > lsDestination ="" > > FOR i = 1 TO LEN(lsSource) STEP 76 > > lsDestination = lsDestination + SUBSTR(lsSource,i,76) + CRLF > > NEXT > > lTab[1,2] = lsDestination > > ? seconds() - liStart > > > > *----------------------------------------- > > * Syntaxe 3 > > liStart= SECONDS() > > lsDestination ="" > > v_tmp = "c:\temp\test.txt" > > =strtofile(lsSource, v_tmp, .F.) > > v_f = Fopen(v_tmp) > > do while not Feof(v_f) > > lsDestination = lsDestination + Fgets(v_f, 76) + CRLF > > enddo > > =Fclose(v_f) > > erase (v_tmp) > > lTab[1,2] = lsDestination > > ? seconds() - liStart > > > > > |
| |||
| Bonjour, Je peux biensur tester les corrections apportées avec vfp8 et mes exemples de fichiers texte. Le seul truc c'est que je suis en vacances ce soir. Retour le 18/08. Cordialement Karine "Gregory" <Gregory***nowhere.com> a écrit dans le message de news: %23v22bJY7IHA.5024***TK2MSFTNGP03.phx.gbl... > Bon Francis, > > J'ai bu le cafe que tu m'as offert - c'est gentil - merci > > Je fais ton test (4*1024) : 11 sec > Je fais mon test: 0.1 sec > > local obj, i > obj = createobject('truc') > > for i=1 to 4*1024 > obj.Property = m.obj.Property + REPLICATE("1",1024) > next > > > > Si tu m'envoies ton winsock - avec ton bug corrige !- (je crois que j'ai > la version 1.16), je vais integrer mon truc dedans > > je ne toucherai qu'a this.DATA - je me perds dans ce grand spaghetti > > Karine: > > Es-tu prete a faire le test enVFP8 ? Je n'ai que la 9 > -- > Gregory > __ > "Francis Faure" <francis.faure_***_dord.com> wrote in message > news:uTNGA9O7IHA.3692***TK2MSFTNGP05.phx.gbl... >> Gregory, >> >> Hum, >> je suis d'accord dans le principe et conceptuellement dans tes propos... >> Mais.... >> >> pour répondre >> je ne passe justement PAS par une propriété d'une classe (expres) >> >> Car le probleme est justement la limitation des propriétés de VFP qui >> ne support pas plus de 16 Méga >> >> si tu veux t'en convaincre : essayes le code suivant : >> o=CREATEOBJECT("truc") >> o.Property = "" >> FOR i=1 TO 17*1024 >> ? i >> o.Property = o.Property + REPLICATE("1",1024) >> next >> DEFINE CLASS truc as Custom >> Property = "" >> ENDDEFINE >> >> prends un café, >> mais ça va peter à la tronche lorsque i = 16384 >> >> >> le probleme actuel de vfp winsock /send mail est donc bien que j'utilise >> des propriétés et subit la limitation de 16Mo >> >> Pascal m'a donné une idée et la solution pour contourner (passer par des >> variables), >> mais j'avoue ne pas avoir pris le temps de tout re implementer en >> variables >> car je me dit : >> d'une part : qu'un mail de 16Mo .... c'est une erreur de >> conception... a mon humble avis... >> d'autre part : la majorité des opérateurs internet de laisse pas >> passer un mail d'un tel taille (en France) >> >> ceci dit je travail sur la 1.18 de vfp_winsock elle supportera + que 16mo >> (pour le principe) mais je vais devoir passer par variables et fichiers >> temporaires, >> enfin : je sais qua'vant qu'il y a des trucs a optimiser en terme de >> temps de traitement >> >> Je vais peut être rajouter une propriété "Zip_Attachment" pour zipper >> avant d"expédier >> >> >> si tu as un peu de temps : je peux te donner des exemples si tu veux >> m'aider a optimiser et contribuer ? >> >> Cordialement >> Francis >> >> >> >> >> "Gregory" <Gregory***nowhere.com> a écrit dans le message de news: >> ORSFLNO7IHA.3976***TK2MSFTNGP06.phx.gbl... >>> Francis, >>> >>> Au sujet de Winsock - alines - suggestion >>> >>> (1) Au lieu d'etre un chaine de car, j'utiliserais un objet collection >>> >>> (2) this.data = this.data + .... + CRLF >>> this.data.Add(...) && pas de CRLF >>> >>> (3) l'envoi, au lieu de alines, tu parcours la collection, par item, tu >>> envoies le contenu + CRLF >>> >>> Comme cela, je crois que le probleme de alines() sera disparu >>> -- >>> Gregory >>> __ >>> "Francis FAURE (www.atoutfox.org)" <francis.faure[***]dord.com> wrote in >>> message news:%23LZleqK7IHA.2336***TK2MSFTNGP03.phx.gbl... >>>> Avec quelle version de VFP ? >>>> Avec quelle version de VFP winsock ? >>>> Cordialement >>>> Francis >>>> >>>> >>>> >>>> >>>> "Karine" <info_sansspam***sansspam-soft-lan.com> a écrit dans le message >>>> de >>>> news:OCIxp2J7IHA.1080***TK2MSFTNGP06.phx.gbl... >>>>> Bonjour, >>>>> >>>>> Chaque mois je dois transmettre un fichier texte par mail pour cela >>>>> j'utilise vfpwinsock. >>>>> Cela fonctionne parfaitement jusqu'a une certaine taille de fichier, >>>>> puis >>>>> selon la taille j'ai les erreurs suivantes: >>>>> -> Dans winsock_sendmail Alines déclenche une erreur car j'ai plus de >>>> 65000 >>>>> lignes (erreur 31 je crois) >>>>> -> Dans winsock_sendmail erreur 1234 indices hors limite >>>>> -> Sur les très gros fichiers Erreur 1903 (chaine trop longue) dans >>>>> Send >>>>> c'est lors de la création de This.data >>>>> Je renseigne dans la classe smtp_host,from, from name,subject et >>>> attachment. >>>>> Pour l'instant je vais limité mon fichier texte à 20000 lignes et >>>> lorsqu'il >>>>> sera plus volumineux je l'enverrai par morceaux >>>>> (pour renseignement c'est un fichier texte de 162 caractères par >>>>> lignes. >>>> sur >>>>> un fichier de 32712 lignes, this.data en contient 64642 au moment du >>>> Alines) >>>>> Y a t'il un moyen avec vfpwinsock pour détecter si le fichier est trop >>>>> volumineux pour l'envoi? >>>>> >>>>> Cordialement >>>>> >>>>> Karine >>>>> >>>>> >>>> >>>> >>> >> >> > |
| |
| |
![]() |
| Tags: jointes, pices, taille, winsock |
| Outils de la discussion | |
| Modes d'affichage | |
| |
| ||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| Re: Winsock 1.17 | Francis FAURE \(www.atoutfox.org\) | Newsgroup microsoft.public.fr.fox | 2 | 24/07/2008 21h44 |
| Re: Winsock | Francis FAURE \(www.atoutfox.org\) | Newsgroup microsoft.public.fr.fox | 2 | 23/07/2008 13h05 |
| FTP avec Winsock | christ | Newsgroup microsoft.public.fr.vb | 3 | 22/05/2008 22h41 |
| Re: winsock - créer un messenger | Paul Bacelar | Newsgroup microsoft.public.fr.dotnet.vc | 2 | 18/01/2006 22h13 |