Table Unicode

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Table Unicode

Message par Le Soldat Inconnu »

Un petit programme pour afficher la table des caractère Unicode

(Mettre Unicode dans les options de compilation, sinon, vous aurez 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
	Gadget.i
	Image.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 = 32767
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, 12, #PB_Font_HighQuality)

ProgressBarGadget(0, 0, 0, 600, 30, 32, Maximum)

#Taille = 16
CreateImage(0, #Taille, #Taille, 24)
Dim Image.l(#Taille - 1, #Taille - 1)
StartDrawing(ImageOutput(0))
	DrawingMode(#PB_2DDrawing_Transparent)
	DrawingFont(FontID(0))
	FrontColor($FFFFFF)
	
	DrawText(0, 0, Chr(20))
	For x = 0 To #Taille - 1
		For y = 0 To #Taille - 1
			Image(x, y) = Point(x, y)
		Next
	Next
	
	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
				Couleur = Point(x, y)
				If Image(x, y) <> Couleur And Couleur <> 0
					AddElement(Table())
					Table()\Chr = Chr(n)
					Break 2
				EndIf
			Next
		Next
		
		If n > nn
			nn = n + Maximum / 50
			SetGadgetState(0, n)
			While WindowEvent() : Wend
		EndIf
		
	Next
	
	DrawingFont(FontID(1))
	Caractere_Dimension = TextHeight("a")
	
StopDrawing()
FreeGadget(0)
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
	ScrollAreaGadget(0, 0, 0, 600, 370, Largeur, Hauteur, #PB_ScrollArea_BorderLess)
		HideGadget(0, 1)
		SetGadgetColor(0, #PB_Gadget_BackColor, $FFFFFF)
		
		Ligne = 0
		Colonne = 0
		ForEach Table()
			Table()\Image = CreateImage(#PB_Any, Caractere_Dimension, Caractere_Dimension, 24)
			If StartDrawing(ImageOutput(Table()\Image))
					Box(0, 0, Caractere_Dimension, Caractere_Dimension, $FFFFFF)
					DrawingMode(#PB_2DDrawing_Transparent | #PB_2DDrawing_Outlined)
					DrawingFont(FontID(1))
					Box(0, 0, Caractere_Dimension, Caractere_Dimension, $C0C0C0)
					DrawText((Caractere_Dimension - TextWidth(Table()\Chr)) / 2, (Caractere_Dimension - TextHeight(Table()\Chr)) / 2, Table()\Chr, 0)
				StopDrawing()
				Table()\Gadget = ImageGadget(#PB_Any, Caractere_Dimension * Colonne, Caractere_Dimension * Ligne, Caractere_Dimension, Caractere_Dimension, ImageID(Table()\Image))
			EndIf
			Colonne + 1
			If Caractere_Dimension * Colonne >= Largeur
				Colonne = 0
				Ligne + 1
			EndIf
			
		Next
		
	CloseGadgetList()
	HideGadget(0, 0)
EndIf
StringGadget(1, 0, 370, 100, 30, "")
SetGadgetFont(1, FontID(1))
StringGadget(2, 100, 370, 200, 30, "")
SetGadgetFont(2, FontID(1))

Repeat
	Event = WaitWindowEvent()
	
	Select Event
		Case #PB_Event_Gadget
			Gadget.i =  EventGadget()
			ForEach Table()
				If Gadget = Table()\Gadget
					If EventType() = #PB_EventType_LeftClick
						SetGadgetText(1, "Chr(" + Str(Asc(Table()\Chr)) + ")")
						SetGadgetText(2, Right(GetGadgetText(2), 10) + Table()\Chr)
					EndIf
					Break
				EndIf
			Next
			
	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
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Table Unicode

Message par Ar-S »

Ligne 122 Invalid memory access

Code : Tout sélectionner

ImageGadget(image, Caractere_Dimension * Colonne, Caractere_Dimension * Ligne, Caractere_Dimension, Caractere_Dimension, ImageID(image))
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Table Unicode

Message par Backup »

pareil chez moi :)
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 »

Oups, ne fonctionne pas si vous ne mettez pas l'option de compilation Unicode :mrgreen: forcément

J'ai corrigé le code pour qu'il fonctionne également en ASCII, comme cela, il fait les 2, Unicode ou ASCII en fonction des options de compilation
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)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Table Unicode

Message par Backup »

arf !! bien sur!! :lol:

une idée :
ajouter un menu contextuel , qui permet de recuperer le code dans le press papier
de façon a pouvoir le copier dans un listing par exemple :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Table Unicode

Message par Ar-S »

Nikel maintenant :)
~~~~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 »

Dobro, clique sur un caractère et regarde en bas de la fenêtre. Ca ne copie pas directement dans le presse papier mais bon :)
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)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Table Unicode

Message par Backup »

Le Soldat Inconnu a écrit :Dobro, clique sur un caractère et regarde en bas de la fenêtre. Ca ne copie pas directement dans le presse papier mais bon :)
ha ? mais dis moi , je fais comment ? j'ai un ecran 1024X600 résolution courante maintenant sur les netBooks ; et je ne vois pas le bas de la fenetre !

faudrai pt'ete voir a utiliser la librairie Desktop
DesktopWidth() , et Hauteur = DesktopHeight() :twisted: :twisted: :lol:

de plus , je viens de tester an mettant DesktopHeight()-50 (pour la barre des taches)
je vois la fenetre dans son ensemble, mais aucune information concernant le code ! 8O

je suppose que tu l'ecris vers le bas de l'ancienne fenetre (vers les 600)
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 »

Pfff, qu'elle idée d'avoir une résolution aussi faible :)

J'ai mis à jour le code pour mister Dobro
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)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Table Unicode

Message par Backup »

Le Soldat Inconnu a écrit : J'ai mis à jour le code pour mister Dobro

Merci , ça marche impec :D il va etre mis dans mes outils japbe :)
Le Soldat Inconnu a écrit :Pfff, qu'elle idée d'avoir une résolution aussi faible :)
si j'en crois ça :
http://www.pcinpact.com/actu/news/48827 ... re-one.htm
France : un Netbook vendu par minute en 2008
je suis certainement pas le seul a programmer sur Netbook :D

mais bon , pourquoi crois tu que je me cherche un autre portable ? :)
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 »

mise à jour du code, j'ai bien optimiser la vitesse :D
Je suis passé de 3.5s à 0.4s sur la recherche des caractères existants
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 »

PB : 4.50 en unicode, le code se lance, la progressbarre monte, la table s'affiche puis crash du programme
~~~~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 »

ça marche très bien chez moi 8O je suis en 4.50 aussi en unicode

Et le debugger dis quoi ?
(je remets le code au cas ou)
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 »

Ligne 105 #gadget object number is very high(over 10000), are you sure of that ?
~~~~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 »

:lol: .... fait "continuer" ou compile sans debugger
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)]
Répondre