Table Unicode

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Table Unicode

Message par Ar-S »

Tu as oublié un "Next" avant avant dernière ligne
Sinon ça chie tjrs en unicode pour ma part.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Table Unicode

Message par Le Soldat Inconnu »

oublié un "next" ? mais ça compile chez moi 8O

Bon, j'ai modifié pour le coup "numéro de gadget > 10000"

Dis moi si c'est mieux
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Table Unicode

Message par Ar-S »

ça ne veut rien savoir, j'ai essayé sans japbe, directement avec l'ide PB 4.50 x64, j'ai maintenant un
Ligne 90 the specified #image is not initialized.. :roll:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Table Unicode

Message par Le Soldat Inconnu »

je n'ai pas d'image en ligne 90 ????

Je suis en x86, donc il y a un truc avec le x64
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Table Unicode

Message par venom »

non non, sur mon x64 avec ide purebasic cela se compile bien :wink:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Table Unicode

Message par Le Soldat Inconnu »

j'ai trouvé le bug en faisant un essai sous Vista. C'était un problème avec le dessin du chr(10)
en gros mon code dessine un chr(10) (ça fait un petit carré blanc avec bordure noire), du moins sur XP, sous Vista non. Du coup, je ne filtre plus les caractères et je me retrouve avec un final de 32600 caractère à afficher donc 32600 images + 32600 gadget, alors forcement, plus de place en mémoire et crash.

Essaie à nouveau le code
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Re: Table Unicode

Message par Le psychopathe »

Le Soldat Inconnu a écrit :j'ai trouvé le bug en faisant un essai sous Vista. C'était un problème avec le dessin du chr(10)
en gros mon code dessine un chr(10) (ça fait un petit carré blanc avec bordure noire), du moins sur XP, sous Vista non. Du coup, je ne filtre plus les caractères et je me retrouve avec un final de 32600 caractère à afficher donc 32600 images + 32600 gadget, alors forcement, plus de place en mémoire et crash.

Essaie à nouveau le code
Cela fonctionne toujours pas en unicode : Windows Seven
J'ai la barre de progression et après rien, le fentre est vide.
@+
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Table Unicode

Message par Le Soldat Inconnu »

j'ai encore modifier le code, cela donne quoi ?
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Re: Table Unicode

Message par Le psychopathe »

Le Soldat Inconnu a écrit :j'ai encore modifier le code, cela donne quoi ?
toujours pareil :(
Image
El Papounet
Messages : 57
Inscription : mer. 09/juin/2010 23:47

Re: Table Unicode

Message par El Papounet »

Si ça peut aider, car j'ai le même problème en unicode

A la ligne 15, si j'initialise la variable Maximum à 10274 en lieu et place des 32767 d'origine, ça fonctionne.
Il faut un certain temps pour afficher les caractères, mais il n'y a pas de plantage.

Par contre, si je met 10275 alors là ça plante et je me retrouve avec le message d'erreur "The specified #Image is not initialized" à la ligne 95 If StartDrawing(ImageOutput(Table()\Image))
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Table Unicode

Message par Le Soldat Inconnu »

Nouvelle version du code, car l'ancien n'est pas très compatible avec les Font de 7

Toujours pareil, il faut compiler en mode Unicode pour avoir la table Unicode ou compiler en mode ASCII pour avoir la table ASCII

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4
;
; Explication du programme :
; Création de la table ASCII ou UNICODE (en fonction du mode de compilation)

Structure Structure_Table
	Chr.s
	x.i
	y.i
EndStructure
NewList Table.Structure_Table()

; Création de la fenêtre et de la GadgetList
CompilerIf #PB_Compiler_Unicode
	Titre.s = "Table Unicode"
	Maximum = 32768
CompilerElse
	Titre.s = "Table ASCII"
	Maximum = 255
CompilerEndIf

If OpenWindow(0, 0, 0, 600, 400, Titre, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0
	End
EndIf

; Temps1 = ElapsedMilliseconds()

Define WindowDefaultFontName.s
Define ncm.NONCLIENTMETRICS
ncm\cbSize = SizeOf(NONCLIENTMETRICS)
SystemParametersInfo_(#SPI_GETNONCLIENTMETRICS, SizeOf(NONCLIENTMETRICS), @ncm, 0)
WindowDefaultFontName = PeekS(@ncm\lfMessageFont\lfFaceName, 32)

LoadFont(0, WindowDefaultFontName, 8, #PB_Font_HighQuality)
LoadFont(1, WindowDefaultFontName, 10, #PB_Font_HighQuality)

ScrollAreaGadget(0, 0, 0, 600, 370, 600, 370, 50, #PB_ScrollArea_BorderLess)
	
	ProgressBarGadget(1, 0, 0, 600, 30, 32, 100)
	
	#Taille = 16
	CreateImage(0, #Taille, #Taille, 24)
	Dim CaracterePrecedent.l(#Taille - 1, #Taille - 1)
	Dim Caractere.l(#Taille - 1, #Taille - 1)
	StartDrawing(ImageOutput(0))
		DrawingMode(#PB_2DDrawing_Transparent)
		DrawingFont(FontID(0))
		FrontColor($FFFFFF)
		
		AddElement(Table())
		Table()\Chr = " "
		
		For n = 33 To Maximum
			
			Box(0, 0, #Taille, #Taille, 0)
			DrawText(0, 0, Chr(n))
			
			For x = 0 To #Taille - 1
				For y = 0 To #Taille - 1
					Caractere(x, y) = Point(x, y)
				Next
			Next
			
			If CompareMemory(@Caractere(), @CaracterePrecedent(), #Taille * #Taille * 4)
				DeleteElement(Table())
			Else
				AddElement(Table())
				Table()\Chr = Chr(n)
				CopyMemory(@Caractere(), @CaracterePrecedent(), #Taille * #Taille * 4)
			EndIf
			
			Temps = ElapsedMilliseconds()
			If Temps > TempsMemoire + 200
				TempsMemoire = Temps
				SetGadgetState(1, 50 * n / Maximum)
				While WindowEvent() : Wend
			EndIf
			
		Next
		
		DrawingFont(FontID(1))
		Caractere_Dimension = TextHeight("a")
		
	StopDrawing()
	FreeImage(0)
	
	; Temps2 = ElapsedMilliseconds()
	; MessageRequester("Temps", Str(Temps2 - Temps1))
	
	Caractere_Dimension + 4
	Largeur = Int(570 / Caractere_Dimension)
	Hauteur = Round(ListSize(Table()) / Largeur, #PB_Round_Up) * Caractere_Dimension
	Largeur * Caractere_Dimension
	SetWindowColor(0, $FFFFFF)
	If Hauteur <= 32767
		If CreateImage(1, Largeur, Hauteur, 24)
			If StartDrawing(ImageOutput(1))
					Box(0, 0, Largeur, Hauteur, $FFFFFF)
					DrawingMode(#PB_2DDrawing_Transparent | #PB_2DDrawing_Outlined)
					DrawingFont(FontID(1))
					Ligne = 0
					Colonne = 0
					ForEach Table()
						Table()\x = Colonne * Caractere_Dimension
						Table()\y = Ligne * Caractere_Dimension
						Box(Table()\x, Table()\y, Caractere_Dimension, Caractere_Dimension, $C0C0C0)
						DrawText(Table()\x + (Caractere_Dimension - TextWidth(Table()\Chr)) / 2, Table()\y + (Caractere_Dimension - TextHeight(Table()\Chr)) / 2, Table()\Chr, 0)
						Colonne + 1
						If Caractere_Dimension * Colonne >= Largeur
							Colonne = 0
							Ligne + 1
						EndIf
						
						Temps = ElapsedMilliseconds()
						If Temps > TempsMemoire + 200
							TempsMemoire = Temps
							SetGadgetState(1, 50 + 50 * ListIndex(Table()) / ListSize(Table()))
							While WindowEvent() : Wend
						EndIf
						
					Next
					
				StopDrawing()
			EndIf
			FreeGadget(1)
			SetGadgetAttribute(0, #PB_ScrollArea_InnerWidth, Largeur)
			SetGadgetAttribute(0, #PB_ScrollArea_InnerHeight, Hauteur)
			SetGadgetColor(0, #PB_Gadget_BackColor, $FFFFFF)
			ImageGadget(3, 0, 0, Largeur, Hauteur, ImageID(1))
		Else
			SetGadgetState(1, 100)
		EndIf
		
	CloseGadgetList()
	HideGadget(0, 0)
EndIf
StringGadget(1, 0, 370, 100, 30, "")
SetGadgetFont(1, FontID(1))
StringGadget(2, 100, 370, 400, 30, "")
SetGadgetFont(2, FontID(1))

Repeat
	Event = WaitWindowEvent()
	
	Select Event
		Case #PB_Event_Gadget
			Select EventGadget()
				Case 3
					If EventType() = #PB_EventType_LeftClick
						x = WindowMouseX(0)
						y = WindowMouseY(0) + GetGadgetAttribute(0, #PB_ScrollArea_Y)
						ForEach Table()
							If x >= Table()\x And x < Table()\x + Caractere_Dimension And y >= Table()\y And y < Table()\y + Caractere_Dimension
								Break
							EndIf
						Next
						SetGadgetText(1, "Chr(" + Str(Asc(Table()\Chr)) + ")")
						SetGadgetText(2, Right(GetGadgetText(2), 30) + Table()\Chr)
					EndIf
			EndSelect
	EndSelect
	
Until Event = #PB_Event_CloseWindow
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Table Unicode

Message par Fig »

fonctionne bien en ascii et unicode sous w7 x64.

Je n'avais jamais réalisé le nombre de Kanji en unicode... 8O

Bon programme, propre et utile !
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Table Unicode

Message par Kwai chang caine »

J'ai une erreur, ligne 97 mais jsuis sur EEEPC avec XP :oops:

Code : Tout sélectionner

If CreateImage(1, Largeur, Hauteur, 24)
The height is negative
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Table Unicode

Message par Le Soldat Inconnu »

vérifie avec un debug que WindowDefaultFontName contient bien le nom d'une police.
Sinon, regarde la taille de ListSize(Table()) avant le bug.

Merci
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Table Unicode

Message par Kwai chang caine »

Je n'ai pas mon EEEPC sous la main aujourd'hui
Mais je viens d'essayer avec VISTA et un portable normal et ça marche du feu de dieu 8)

Donc peut etre que ça venait de XP, ou des capacités du EEEPC, j'essaierais de refaire l'essais des que je pose la main sur lui

En tout cas merci de ton partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre