Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: DCelso on February 10, 2013, 04:58:33 PM

Title: mostrar con say todos los caracteres
Post by: DCelso on February 10, 2013, 04:58:33 PM
hola, estoy intentando mostrar los caracteres desde el 0 hasta el 255 con bennu, pero el programa se me queda tostado.

Program pruebas;

import "mod_string"
import "mod_say"

Global
    char i;
        string text;
Begin
    text = "";
    for (i=0;i<100;i++)
       text= text + chr(i);
    end
    say("1:: "+ text);
    text = "";
    for (i=100;i<128;i++)
       text= text + chr(i);
    end
    say("2:: "+ text);
    text = "";
    for (i=128;i<256;i++)
       text= text + chr(i);
    end
    say("3:: "+ text);

end

Creo que es culpa de los caracteres no imprimibles, pero no se me ocurre como saltarmelos.
Tambien me pasa con write y write_text.

¿Existe alguna función para saber si un caracter es imprimible en bennu?


por otro lado, SplinterGU, ¿sería posible hacer que say/write si no puede imprimir un caracter no imprima nada?
Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 10, 2013, 05:49:59 PM
hombre se queda tostado porque la variable indice es un char (valores entre -128 y 127)... :facepalm:  ;)

cambia


char i;

por

int i;
Title: Re:mostrar con say todos los caracteres
Post by: DCelso on February 10, 2013, 06:05:56 PM
 :o , tocado.
Title: Re:mostrar con say todos los caracteres
Post by: DCelso on February 10, 2013, 06:41:21 PM
increíble, en linux, guardando en un archivo la salida del ejemplo  siguiente, me guarda los caracteres cp1252 ( que es una modificación de microsoft del iso8859_1 con carácteres de la iso8859_15)

Program pruebas;

import "mod_string"
import "mod_say"

Global
    int i;
        string text;
Begin
    text = "";
    for (i=0;i<256;i++)
       text= chr(i);
       say(i+":"+text);
    end

end


bgdi prueba > archivo.txt


0:
1:
2:
3:
4:
5:
6:
7:
8:
9:   
10:

11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:!
34:"
35:#
36:$
37:%
38:&
39:'
40:(
41:)
42:*
43:+
44:,
45:-
46:.
47:/
48:0
49:1
50:2
51:3
52:4
53:5
54:6
55:7
56:8
57:9
58::
59:;
60:<
61:=
62:>
63:?
64:@
65:A
66:B
67:C
68:D
69:E
70:F
71:G
72:H
73:I
74:J
75:K
76:L
77:M
78:N
79:O
80:P
81:Q
82:R
83:S
84:T
85:U
86:V
87:W
88:X
89:Y
90:Z
91:[
92:\
93:]
94:^
95:_
96:`
97:a
98:b
99:c
100:d
101:e
102:f
103:g
104:h
105:i
106:j
107:k
108:l
109:m
110:n
111:o
112:p
113:q
114:r
115:s
116:t
117:u
118:v
119:w
120:x
121:y
122:z
123:{
124:|
125:}
126:~
127:
128:€
129:
130:‚
131:ƒ
132:„
133:…
134:†
135:‡
136:ˆ
137:‰
138:Š
139:‹
140:Œ
141:
142:Ž
143:
144:
145:‘
146:’
147:“
148:”
149:•
150:–
151:—
152:˜
153:™
154:š
155:›
156:œ
157:
158:ž
159:Ÿ
160:
161:¡
162:¢
163:£
164:€
165:¥
166:Š
167:§
168:š
169:©
170:ª
171:«
172:¬
173:­
174:®
175:¯
176:°
177:±
178:²
179:³
180:Ž
181:µ
182:¶
183:·
184:ž
185:¹
186:º
187:»
188:Œ
189:œ
190:Ÿ
191:¿
192:À
193:Á
194:Â
195:Ã
196:Ä
197:Å
198:Æ
199:Ç
200:È
201:É
202:Ê
203:Ë
204:Ì
205:Í
206:Î
207:Ï
208:Ð
209:Ñ
210:Ò
211:Ó
212:Ô
213:Õ
214:Ö
215:×
216:Ø
217:Ù
218:Ú
219:Û
220:Ü
221:Ý
222:Þ
223:ß
224:à
225:á
226:â
227:ã
228:ä
229:å
230:æ
231:ç
232:è
233:é
234:ê
235:ë
236:ì
237:í
238:î
239:ï
240:ð
241:ñ
242:ò
243:ó
244:ô
245:õ
246:ö
247:÷
248:ø
249:ù
250:ú
251:û
252:ü
253:ý
254:þ
255:ÿ

Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 10, 2013, 06:52:18 PM
adjunta el archivo.
Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 10, 2013, 06:58:24 PM
igual no te puedes basar en lo que ves en el say, eso seguramente dependera de la codificacion que tu tengas seteada en tu equipo... a mi me da como 180 esto

180:´

que difiere de lo que tu tienes.


0:
1:
2:
3:
4:
5:
6:
7:
8:
9:   
10:

11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:!
34:"
35:#
36:$
37:%
38:&
39:'
40:(
41:)
42:*
43:+
44:,
45:-
46:.
47:/
48:0
49:1
50:2
51:3
52:4
53:5
54:6
55:7
56:8
57:9
58::
59:;
60:<
61:=
62:>
63:?
64:@
65:A
66:B
67:C
68:D
69:E
70:F
71:G
72:H
73:I
74:J
75:K
76:L
77:M
78:N
79:O
80:P
81:Q
82:R
83:S
84:T
85:U
86:V
87:W
88:X
89:Y
90:Z
91:[
92:\
93:]
94:^
95:_
96:`
97:a
98:b
99:c
100:d
101:e
102:f
103:g
104:h
105:i
106:j
107:k
108:l
109:m
110:n
111:o
112:p
113:q
114:r
115:s
116:t
117:u
118:v
119:w
120:x
121:y
122:z
123:{
124:|
125:}
126:~
127:
128:€
129:
130:,
131:ƒ
132:,,
133:...
134:†
135:‡
136:ˆ
137:‰
138:Š
139:‹
140:Œ
141:
142:Ž
143:
144:
145:'
146:'
147:"
148:"
149:•
150:–
151:—
152:˜
153:™
154:š
155:›
156:œ
157:
158:ž
159:Ÿ
160:
161:¡
162:¢
163:£
164:¤
165:¥
166:¦
167:§
168:¨
169:©
170:ª
171:«
172:¬
173:­
174:®
175:¯
176:°
177:±
178:²
179:³
180:´
181:µ
182:¶
183:·
184:¸
185:¹
186:º
187:»
188:¼
189:½
190:¾
191:¿
192:À
193:Á
194:Â
195:Ã
196:Ä
197:Å
198:Æ
199:Ç
200:È
201:É
202:Ê
203:Ë
204:Ì
205:Í
206:Î
207:Ï
208:Ð
209:Ñ
210:Ò
211:Ó
212:Ô
213:Õ
214:Ö
215:×
216:Ø
217:Ù
218:Ú
219:Û
220:Ü
221:Ý
222:Þ
223:ß
224:à
225:á
226:â
227:ã
228:ä
229:å
230:æ
231:ç
232:è
233:é
234:ê
235:ë
236:ì
237:í
238:î
239:ï
240:ð
241:ñ
242:ò
243:ó
244:ô
245:õ
246:ö
247:÷
248:ø
249:ù
250:ú
251:û
252:ü
253:ý
254:þ
255:ÿ


adjunto el archivo, seguro que cuando lo abres veras la codificacion que tienes tu seteada... que difiere de la mia...
Title: Re:mostrar con say todos los caracteres
Post by: DCelso on February 10, 2013, 08:23:37 PM
 ;) ,ciertísimo. Al abrir tu archivo veo lo mismísimo que con el mio.
Tendré que verlo en el código mas mejormente  :'(
Title: Re:mostrar con say todos los caracteres
Post by: DCelso on February 10, 2013, 08:45:16 PM
¿splinterGU, y esto nos podría servir?
mira a ver si te da la misma salida que a mi

Program pruebas;

import "mod_string"
import "mod_say"
import "mod_key"
import "mod_text"

Global
    int i;
        string text;
Begin
    text = "";
    for (i=0;i<100;i++)
       text= text + chr(i);
    end
    write(0,10,10,0,text); 
    text = "";
    for (i=100;i<200;i++)
       text= text + chr(i);
    end
    write(0,10,40,0,text); 
    text = "";
    for (i=200;i<256;i++)
       text= text + chr(i);
    end
    write(0,10,60,0,text); 

    while (!key(_esc)) 
        frame;
    end

end

Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 10, 2013, 10:06:47 PM

Program pruebas;

import "mod_string"
import "mod_say"
import "mod_map"
import "mod_text"

Global
    int i;
    string text;
    int map;
Begin
    text = "";
    for (i=0;i<256;i++)
       text+= chr(i);
    end
    map = write_in_map(0,text,0);
    save_png(0,map,"text.png");
end


md5sum
1b664687295604d209110c54aabf0770  text.png
Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 10, 2013, 10:10:15 PM
en teoria el del sistema es cp850
Title: Re:mostrar con say todos los caracteres
Post by: master on February 10, 2013, 10:15:18 PM
Disculpen por meterme :D
Por lo que veo en ambas imágenes, es CP437
Obviamente a mi también me genera los mismos.
Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 10, 2013, 10:45:36 PM
pues no se, en el codigo de fenix estaba asi.
Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 10, 2013, 11:02:36 PM
pues tienes razon, es un cp437... pues que mal, ahora el cambiarlo quizas traeria problemas... bueno, quizas solo al cambiarlo a nivel interno no seria mayor problema...

entonces lo que debe hacer el fntedit es generar cp437 o tomar eso como base.
Title: Re:mostrar con say todos los caracteres
Post by: DCelso on February 11, 2013, 12:54:33 AM
Pues aún así hay algo que no cuadra. Sí fuera así. No podríamos mostrar caracteres que no estuvieran en esa codificación. Y yo sí puedo poner por ejemplo € y sale.
Que os sale a vosotros sí poneis write (0,0,0,0,"€");?
Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 11, 2013, 01:03:31 AM
pero eso te sale con el font del sistema o el que haces tu?

copy&paste de tu post (ver adjunto)

Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 11, 2013, 01:09:23 AM
es imposible que puedas escribir el € en formato cp437 ni iso8859-1...

no se como es que haces un write y te sale eso
Title: Re:mostrar con say todos los caracteres
Post by: master on February 11, 2013, 01:21:30 AM
me aparece lo mismo que a splinter si mi PRG tiene codificación utf-8 (adjunto 1).
Si uso la codificación CP1252 me aparece el adjunto 2
Supongo que es como tienes el charset de tu codigo PRG, y bennu busca el caracter en tu fuente fnt que tiene otro charset (que por coincidencia es el mismo).
Title: Re:mostrar con say todos los caracteres
Post by: DCelso on February 12, 2013, 07:03:45 PM
No hay nada como leer el código para saber qué hace algo.
libtext.c línea 695, de gr_text_put

    switch ( f->charset )
        {
            case CHARSET_ISO8859:
                current_char = dos_to_win[*text];
                break;

            case CHARSET_CP850:
                current_char = *text;
                break;

            default:
                current_char = 0;
                break;
        }

así es que mola mazo pero la verdad está aqui

NOTA: hay que decir que bennu (o el que hizo fenix) llama a cp850 (charset msdos) y a iso8859 (charset de windows)

*Si la fuente tiene activado el charset cp850, obtiene el índice que le pasaste a pelo, (es decir, pasa olímpicamente de convertir nada, lo que quiere decir que usará e índice de carácter con el que has codificado el fichero .prg)
Aquí está el truco de porqué el fnt que hay dentro de bennu por defecto pinta el cp437 tan perfectamente, y aparentemente las fuentes de master con cp437 simuladas en cp850 le van correctamente. Por tanto, si el fnx tiene puesto que es un charset cp850 quiere decir que descartará hacer alguna conversion y usará el charset con el que estuviera hecho el .prg para obtener el índice para buscar la imagen en el fnx. (dentro de la limitación de 8 bits por caracter, esto explica el por qué a splinter le pinta dos caracteres el €, su codifcacion es utf8, que usa dos bytes para identificar al euro, por lo que pasa dos chars al fnt de bennu y pinta dos chars correspondientes a los dos bytes :D )
También explica el por qué a mi me pintaba bien el euro  :D

*Si la fuente tiene activado el charset iso8859 (aquí no diferencia entre el _1 y el _15, supongo que no existían antes dos o que es uno más genérico de estos) entonces hace una conversión curiosa dos_to_win, que lo que hace es convertir un índice cp850 en iso8859.

En xctype.c podemos ver las tablas de conversion ente cp850 e iso8859, y vivceversa

unsigned char dos_to_win[256] = {
  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
199, 252, 233, 226, 228, 224, 229, 231, 234, 235, 232, 239, 238, 236, 196, 197,
201, 230, 198, 244, 246, 242, 251, 249, 255, 214, 220, 248, 163, 216, 215, 131,
225, 237, 243, 250, 241, 209, 170, 186, 191, 174, 172, 189, 188, 161, 171, 187,
166, 166, 166, 166, 166, 193, 194, 192, 169, 166, 166,  43,  43, 162, 165,  43,
43,  45,  45,  43,  45,  43, 227, 195,  43,  43,  45,  45, 166,  45,  43, 164,
240, 208, 202, 203, 200, 105, 205, 206, 207,  43,  43, 166,  95, 166, 204, 175,
211, 223, 212, 210, 245, 213, 181, 254, 222, 218, 219, 217, 253, 221, 175, 180,
173, 177,  61, 190, 182, 167, 247, 184, 176, 168, 183, 185, 179, 178, 166, 160
} ;

/* Tabla de conversión de caracteres Windows a MS-DOS */

unsigned char win_to_dos[256] =
{
   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
128, 129, 130, 159, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
255, 173, 189, 156, 207, 190, 254, 245, 249, 184, 166, 174, 170, 240, 169, 238,
248, 241, 253, 252, 239, 230, 244, 250, 247, 251, 167, 175, 172, 171, 243, 168,
183, 181, 182, 199, 142, 143, 146, 128, 212, 144, 210, 211, 222, 214, 215, 216,
209, 165, 227, 224, 226, 229, 153, 158, 157, 235, 233, 234, 154, 237, 232, 225,
133, 160, 131, 198, 132, 134, 145, 135, 138, 130, 136, 137, 141, 161, 140, 139,
208, 164, 149, 162, 147, 228, 148, 246, 155, 151, 163, 150, 129, 236, 231, 152
} ;


Así que como conclusión, podemos sacar que actualmente como está el sistema, simular cualquier charencoding con codificación cp850 en los fnx, te permite usar esa codificación en tu .prg y así hacer coincidir lo que escribes en los textos con lo que representará tu fnx simulado.

Y activar el iso8859 en fnx  solo funciona si codificas tu fichero en cp850 tu .prg, en cualquier otro caso lo que hace es liarla parda :D, porque bennu se cree que está codificado en cp850 y aplica la tabla de transformación de arriba cruzando aún más lo que esperas obtener con lo que realmente obtienes de tu fuente :D. Como los primero 127 caracteres suelen ser muy similares o iguales en todas las codifiaciones (son los realmetne llamados ASCII) nunca habíamos detectado este problema :D.

Soluciones a este lío.

* La más directa es no llamar nunca mas a los fnx con codificación cp850 así, sino llamarlos fnx con codificación directa ( es decir, igual a la codificación del .prg del que viene :D ). Y nunca más usar codificaciones iso8859, porque pueden liar los resultados al aplicar una tabla de transformación fija de cp850 a iso8859

* la mejor solución sería hacer que libtext.c detectara de alguna forma la codificación del .prg y la convirtiera en una codifiación universal (osea válida para cualquier signo, tipo unicode o utf8)  para luego buscar en el fnx la codifiación que usa (actualmente solo soporta 2) y convertirla de la universal a la del fnx y así poder encontrar el índice correcto en el fnx.
Esto haría transparente al usuario el charset que empleara en el .prg y sabría que su programa usaría el charset que tuviera el fnx

*Una  solución de compromiso, y rapida de adaptar a lo actual, podría ser que al write se le pudiera pasar un parámetro más indicando el charset del .prg ( de algunos posibles) y que en base a éste, a una tabla de transformación y al charset que leyera en el fnx (recordemos que son 2) sacara el índice adecuado para buscar en el fnx.


Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 12, 2013, 07:12:17 PM
ya lo he dicho que bennugd/fenix convierte segun el tipo de codificacion... por otro lado, tienes el parametro en el compilador para indicar cuando trabajas con "formato dos", solo DOS

  -c              File uses the MS-DOS character set

a mi me parece que como primera medida hay que cambiar las constantes y nombres en los fuentes CP_850 por CP_437... correcto?
Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 12, 2013, 07:15:32 PM
igualmente sigo no entendiendo como puedes pintar bien el €, que codificacion tienes? yo he intentando con el sublimetext y siempre que intento guardar el archivo, me dice que hay caracteres que no pueden ser salvados en un archivo cp850, ni cp437, solo en utf8.

podrias dar mas detalles?

edit: por demas esta decir que el simbolo € no esta en el font del sistema.
Title: Re:mostrar con say todos los caracteres
Post by: DCelso on February 12, 2013, 07:24:00 PM
actualmente la constante CP850 en bennu hace que no transforme nada, deja el valor que le llega, así que podríamos decir que es algo como default_charset o parent_charset, mas que cp850

El problematico es iso8859 que actualmente mete una tabla de transformación fija (aqui ya no se si de cp850-a iso8859 o de cp437 a iso8859 (como creemos que podria suceder)), luego te digo que tabla de transformación exactamente es, tengo un programilla en lazarus que nos podría servir.

lo del euro, en el otro hilo te expliqué mi fallo. Codificaba 8859_15 y engañaba al fnx diciendo que era cp850

lo de el -c, habrá que estudiar que hace, porque si convierte la entrada a cp850, empeora las cosas, que haría con  esos caracteres raros ?, si lo que hace es convertirlo a iso8859_15 podría valer para algo ( al menos para nosotros los latinos :D )



Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 12, 2013, 08:43:17 PM
en realidad, no...

cp_850 (cp_437 en realidad) es lo que bennugd toma como base... y hace conversion de 850 a iso8859 (supongo que iso8859-1) y tambien es la base para dibujar el font del sistema... o sea, no es directo, es que el sistema trabaja en cp850, entonces, obviamente no tiene que hacer conversiones... que tu hagas un fake para pasar un font sin conversion diciendole que es cp850, eso es otra cosa.

NOTA: cuando digo cp850 quiero decir cp437, pero como todo esta nominado cp850, hablamos de eso.

una de las cuestiones es ver que iso8859 es el de la tabla de conversiones y si dicha tabla es cp437<->iso8859-X o es cp850<->iso8859-X.

luego quedaria darle soporte a otros, aunque si armas un "cp850" fake con tus caracteres especiales, ya no tienes problemas para dibujar los fonts que necesites.
Title: Re:mostrar con say todos los caracteres
Post by: DCelso on February 12, 2013, 10:30:37 PM
Siento disentir. Esto convencido, y casi podría afirmar que bennugd no trabaja con cp437 (ni con ninguna codificación específica), simplemente  que el fnt por defecto interno que trae está con esos caracteres.

He probado que si codificas un archivo en iso8859_15 y creas un fnx con los caracteres iso8859_15 (y le pones en la cabecera charset =1) funciona de maravilla. Y casi puedo afirmar a ciencia cierta que pasará lo mismo con cualquier otro charset de 8 bits (de longitud fija) con el que hagas las pruebas. Está claro que si usas utf8 (longitud dinámica, posibilitando mas de 256 caracteres) no funcionará porque fnx no tiene soporte para mas de 256 caracteres ni longitud dinámica.

He extraído las tablas de conversión y veo que son conversoras entre cp850 e iso8859_1, pero están muy curradas, porque para los casos en los que no hay conversión directa se ha buscado el caracter más parecido o uno que de la pega como sustituto :D, que tío más bueno el que lo hizo :D.

Title: Re:mostrar con say todos los caracteres
Post by: DCelso on February 12, 2013, 10:33:27 PM
Este es el programilla con las tablas metidas ya.
http://code.google.com/p/fpg-editor/downloads/detail?name=project1.7z&can=2&q=
Title: Re:mostrar con say todos los caracteres
Post by: DCelso on February 12, 2013, 10:38:07 PM
Como conclusión, yo dejaría bennu tal cual.

Va perfecto para trabajar con cualquier charencoding de 8 bits, ( y es lo que más usamos con windows ;) ).

Solo hay que tener en cuenta esto:  crear tu .prg con un charset de (8bits) y crear tu fnx con el mismo charset poniendo en su cabecera como valor de charset un 1. (que es el valor que bennu usa para no aplicar tabla de transformación)
Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 13, 2013, 01:39:53 AM
Quote from: DCelso on February 12, 2013, 10:30:37 PM
Siento disentir. Esto convencido, y casi podría afirmar que bennugd no trabaja con cp437 (ni con ninguna codificación específica), simplemente  que el fnt por defecto interno que trae está con esos caracteres.

He probado que si codificas un archivo en iso8859_15 y creas un fnx con los caracteres iso8859_15 (y le pones en la cabecera charset =1) funciona de maravilla. Y casi puedo afirmar a ciencia cierta que pasará lo mismo con cualquier otro charset de 8 bits (de longitud fija) con el que hagas las pruebas. Está claro que si usas utf8 (longitud dinámica, posibilitando mas de 256 caracteres) no funcionará porque fnx no tiene soporte para mas de 256 caracteres ni longitud dinámica.

He extraído las tablas de conversión y veo que son conversoras entre cp850 e iso8859_1, pero están muy curradas, porque para los casos en los que no hay conversión directa se ha buscado el caracter más parecido o uno que de la pega como sustituto :D, que tío más bueno el que lo hizo :D.



es un chiste? charset 1 sabes bien que no hace conversion... yo creo que entiendes lo que pasa, por favor, no me hagas explicar algo que ya sabes...

bennugd trabaja con una base, esa base es la definida en el font del sistema, tienes que tener codificacion de tus prg con esa misma codificacion...

ahora si quieres aprovechar esto, para usar cualquier encoding, puedes usar el enconding 1 que es el que hace 1 a 1 y usas cualquier encoding mientras tenga coherencia con tu prg y todos los caracteres sean de 8bits...

el problema que tenemos aca, es que si bien la tabla es correcta conversion cp850 a iso8859-1 (no es ni *-15 ni ningun otro, es *-1!) el font del sistema es cp437... y algo de los 2 hay que corregir.
Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 13, 2013, 01:55:57 AM
edit: tambien veo que el font del sistema necesitaria una retocada... algunos caracteres estan muy empastados cuando hay lugar para dejarlos bien, ademas de los que son para hacer dibujos no se unen... no se si es el espaciado o el font.

edit2: maldito espaciado, si lo quito los fonts de letras quedan pegados.
Title: Re:mostrar con say todos los caracteres
Post by: DCelso on February 13, 2013, 06:58:59 AM
 :o. Tienes mucha razón en todo. Ya se que no está programado así a posta. Pero el efecto colateral nos sirve para poder usar cualquier codificación. Y eso mola  ;D

en cuanto a lo del espaciado. Se lo quitaste a todas las font? O sólo a la del sistema.
Eso de unir chars serviría para simular aplicaciones de msdos ;)
Title: Re:mostrar con say todos los caracteres
Post by: SplinterGU on February 13, 2013, 12:16:42 PM
no quite el espaciado entre caracteres porque va a dar problemas con la parte ASCII, tendria que rehacer el font... ya veremos... eso del espaciado creo que yo cometi el error en fenix... la verdad que no recuerdo, si recuerdo que antes iban desparejas las funciones write y las funciones para saber el ancho de un texto.

en fin, nuevo item en la lista de pendientes... :(
Title: Re:mostrar con say todos los caracteres
Post by: DCelso on February 13, 2013, 01:31:50 PM
Quote from: SplinterGU on February 13, 2013, 12:16:42 PM
no quite el espaciado entre caracteres porque va a dar problemas con la parte ASCII, tendria que rehacer el font... ya veremos... eso del espaciado creo que yo cometi el error en fenix... la verdad que no recuerdo, si recuerdo que antes iban desparejas las funciones write y las funciones para saber el ancho de un texto.

en fin, nuevo item en la lista de pendientes... :(
Ah, Oh, bueno, no importa, actualmente va bastante bien para lo que necesitamos. :D.