execrator
Messages postés16Date d'inscriptionmercredi 8 septembre 2004StatutMembreDernière intervention19 mars 2009
-
3 juin 2005 à 09:12
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
3 juin 2005 à 16:58
J'ai realisé un programme qui lit un fichier prédéfinie qui contient des caractères spéciaux ceux ci correpondent a un saut de page le programme lit le fichier enregistre dans une variable puis affiche dans une richtextbox (pour la capacité et le multiline).
Aprés commence le travaille sur la richtextbox je cherche le premeir caractère special et releve les coordonné et je cherche les coordonné du suivnat et ainsi de suite toutes les coordonné sont sauvegardé dans un tableau et apres avec ces coordonné je decoupe le texte et affiche ce qui correspond a cahuqe page dans une richtextbox differente et au final j'imprime chaque richtextbox(le but du programme)
Le fichier en general (qui contient le texte de depart) continet 5pages en general mais parfois il peyu en aovir 200, il fait environ ,dans ce cas precis le programme mais 15min avant de lancer l'impression et je ne sai pas trop comment optimiser le code.
Private WithEvents txtObj As TextBox
Private Sub Form_Load()
Dim x(5000), i, j, k As Variant
Dim st, prem As String
Set txtObj = Controls.Add("VB.TextBox", "txtObj")
st = "print.spl"
Open st For Binary As #1
prem$ = Space$(FileLen(st))
Get #1, , prem$
Close #1
'Affiche le fichier dans la textbox(0)
Text1(0).Text = prem$
'Releve les coordonnées des differentes pages
'Le caractère ' ' correspond à un saut de page
x(0) = InStr(Text1(0).Text, " ")
If x(0) Then
i = 1
boucle = 0
While boucle = 0
x(i) = InStr(x(i - 1) + 1, Text1(0).Text, " ")
DoEvents
If x(i) Then
i = i + 1
Else
boucle = 1
End If
Wend
End If
'Affiche chaques pages dans une textbox differente
x(i) = Len(Text1(0))
If i > 1 Then
For j = 1 To i
Load Text1(j)
DoEvents
Text1(j).Text = Mid(Text1(0).Text, x(j - 1) + 1, x(j) - x(j - 1))
DoEvents
Next
End If
'Supprime le caractère ' '
For j = 1 To i - 1
Text1(j).Text = Left(Text1(j).Text, Len(Text1(j).Text) - 1)
DoEvents
Next
'On imprime
If i > 1 Then
For j = 1 To i - 1
If (x(j) - x(j - 1) - 1 > 20) Then
Printer.Print Text1(j).Text
DoEvents
Printer.EndDoc
DoEvents
End If
Next
Else
Printer.Print Text1(0).Text
DoEvents
Printer.EndDoc
DoEvents
End If
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 3 juin 2005 à 10:02
1 - Supprime ces textboxes, leur affichage est couteux
2 - moins de Doevents.... a utiliser oui ! mais avec parcimonie
3 - ajoutes des $ (Mid$ Chr$ Left$
execrator
Messages postés16Date d'inscriptionmercredi 8 septembre 2004StatutMembreDernière intervention19 mars 2009 3 juin 2005 à 16:09
En fait g realisé des textbox puisque en vb il est impossible de créé de liste chainée (comme en c), je ne sai pas combien de partie j'aurais a couper,si je fais un tableau je vias devoir le declaré prédéfinie alros que la je créé au fur et a mesure, mais c'est pas grave le but c'est d'améliorer la rapidité du prog. Et je note pour les doevents c juste que comme ca dure 15min le prog et ca me prend 100%des ressources j'en ai mis un peu partout lol :D mais j'ai peut etre abusé lol
Vous n’avez pas trouvé la réponse que vous recherchez ?
execrator
Messages postés16Date d'inscriptionmercredi 8 septembre 2004StatutMembreDernière intervention19 mars 2009 3 juin 2005 à 16:21
En fait ci g utiliser des textbox c juste que en VB on ne peu pas faire de liste chainé (comme en c) enfin pas a ma connaissance. Comme je ne sais pas à l'avance commebien de partie je via sdevoir decoupé, créé dynamiquement des textbox me parasssait une bonne idée mais bon apparement ca empietre sur la rapidité du prog, je vias donc testé .Le programme met enormement de temps aussi pour reperer les coordonnée du caractère (en meme temps il peut y avoir plus de 1million de caractère ce cas est rare mais possible donc je suis obliger de le prendre en compte.Je prend note pour les doevents comme le prog me prend 100%des ressources pedant 15min g du abusé un peu trop lol
execrator
Messages postés16Date d'inscriptionmercredi 8 septembre 2004StatutMembreDernière intervention19 mars 2009 3 juin 2005 à 16:24
Harg!!! vraiment desolé pour les doublons ... mais ce con dordi me marque impossible dafficher la page alros je recommence mais en fait ca avait marche.... oki merci pour la commande Redim preserve Tableau ( 5 ) as String
ca me sera surement utile :)