VDOPRINT caracteres especiais

Delphi

06/10/2008

EU uso o VDOPrint a um tempo, e atualmente venho enfrentando um problema um tanto complicado.. não consigo imprimir caracteres especiais como por exemplo o º ª... sai um negocio mais ou menos assim na impressão || ... e usando outro metodo de impressao nativo do delphi consigo emitir a impressao destes caracteres.. mas não consigo um gerenciamento t~]ao bom quanto o do VDO com o resto do testo... será q existe alguma maneira de Imprimir estes caracteres usando o VDOPRINT??? se puderem me ajudar.. fico Grato..
:lol: 8) :shock:


Ken_masters

Ken_masters

Curtidas 0

Respostas

Eniorm

Eniorm

06/10/2008

eu tbm já notei isso, inclusive acentos tbm não deu muito certo...

a dica que eu te recomendo para que vc faça um teste ai é colocar mais ou menos assim

Print(01,´N´+#167);

esse 167 equivale ao código ASCII para º, e 166 para ª

abraço


GOSTEI 0
Ken_masters

Ken_masters

06/10/2008

Então Enio eu consegui resolver o problema do nº mas não dava pra fazer do jeito q vc me passou pq nem sempre ele estava na mesma posição... então eu fiz uma funçãozinha

function trocaletra(L : string): string;
var
i : Integer;
caracter, nova : string;
begin
for i := 1 to Length(L) do
begin
caracter := l[i];

if caracter = ´º´ then
begin
caracter := ´?´
end;
nova := nova + caracter;
caracter := ´´;
end;
Result := nova;
end;


GOSTEI 0
Eniorm

Eniorm

06/10/2008

Opa!

Independente da posição do caractere, pode ser usado normalmente

Veja

´Classificação Nº 123´

Eu faria assim

Print(01,´Classificacao N´+#167+´ 123´);

abraços


GOSTEI 0
Ken_masters

Ken_masters

06/10/2008

fuciona mais ou menos assim.. tem um memo que grava uma informacao de até 222 caracteres.. e eu não sei exatamente onde vai aparecer o numero... por exemplo.. hj eu posso cadastrar assim..
´ o ultimo registro do dia doi o nº 33´ e o meu proximo registro pode ser
´ o Nº do registro foi removido ´
com aquela funcao eu faço uma varredura na string inteira e localizo o ´º´ em qualquer parte da string e automaticamente ja substituo por ´?´ q é equivalente ao º na impressora.. bom funcionou!


GOSTEI 0
Eniorm

Eniorm

06/10/2008

sim, eu compreendi....

poderiamos simplificar para que ficasse mais ou menos assim

while (Pos(´º´,suastring) <> 0) do
suastring[Pos(´º´,suastring)] := #167;


GOSTEI 0
Eniorm

Eniorm

06/10/2008

muito estranho!

o resultado de Alt+167 é º, mas de #167 é ?

fiz um teste aqui, e o retorno para o caractere º é o código ascii 186

então, tente assim

while (Pos(´º´,suastring) <> 0) do
  suastring[Pos(´º´,suastring)] := 167;



GOSTEI 0
Eniorm

Eniorm

06/10/2008

eita! mania de ctrl+c ctrl+v, acabei colando errado

o correto é

while (Pos(´º´,suastring) <> 0) do
  suastring[Pos(´º´,suastring)] := 186; // corrija aqui


tenta ai quem sabe da certo, caso contrário, eu recomendo vc dar uma pesquisada no forum sobre VDO

[url]vdo.sourceforge.net[/url]

abraços


GOSTEI 0
Ken_masters

Ken_masters

06/10/2008

FUncionou perfeitamente .. e com um fonte muito mais compacto hehehe... Vou Usar assim mesmo.. VAlew ENIO.. precisando de alguma coisa é só chamar... VAlew mesmo


GOSTEI 0
POSTAR