Por que impressão come letra?

14/08/2008

1

Tenho um banco de dados com um campo Alfa com tamanho 70 caracteres.
Tenho o seguinte procedimento dentro de um loop:

Var Texto, Temp : String; I, Linha, Coluna : Integer, IndiceV, IndiceH : Real;
While not eof do
Begin
Texto := Trim(FieldByName(´abcd´).AsString;
Temp := ´´
For I := 1 to 70 do
Temp := Temp + ´.´
Texto := Texto + Temp;
Rect.Left := Coluna;
Rect.Top := Linha;
Rect.Right := Round(375 * IndiceH);
Rect.Bottom := (Rect.Top + TextHeight(Texto) + 1) * Round(IndiceV);
DrawText(Handle,Pchar(Texto),Length(Texto),Rect,DT_WORDBREAK);
Texto := Trim(FieldByName(´efgh´).AsString;
Coluna := Round(380 * IndiceH);
TextOut(Coluna,Linha,Texto);
Linha := Linha + Round(23 * IndiceV);
Next;
End;

Não existe erro de lógica, mas quando mando imprimir uma palavra em determinadas condições o final da frase não aparece.
Ex:
Supondo que eu tenha 2 registros, Casa = Moradia e Cavalo = Animal, se a casa e o cavalo não tiverem um hífen e o gênero
1) Casa.....................Moradia -> assim aparece correto.
Cavalo..................Animal -> também aparece correto.

mas se tiver Casa - masc = Moradia e Cavalo - masc = Animal então aparece tudo errado
2) Casa - masc..........Moradia-> assim na coluna da esquerda o que está depois do ´-´ desaparece, ou seja o masc e os pontos e na linha seguinte desaparece o masc e as linhas aparecem ficando assim
Casa - Moradia (sumiu o masc e os pontos)
Cavalo -......... Animal ( sumiu o masc)

Já dei showmessage e todos os campos aparecem na tela conforme estão cadastrados, já criei um arquivo texto onde também tudo aparece de forma correta.
Alguém sabe me informar o porquê deste desaparecimento de tudo que está depois do hifen?


Responder

Posts

14/08/2008

Craudio

Ola Edilcimar, por acaso vc já testou em outra impressora ?
Já vi isso acontecer numa LX-300, substituimos a impressora e foi morro abaixo.


Responder

15/08/2008

Edilcimar

não estou usando uma lx-300 estou usando uma CX4100, mas vou fazer um teste e depois retorno!


Responder

15/08/2008

Edilcimar

Testei com uma LX 300, o problema continua, só que agora nem os pontos da segunda linha ela imprime.


Responder

15/08/2008

Craudio

Edilcimar, como a impressão fica em uma impressora Jato de tinta/Laser ?

O meu palpite é impressora, pelo menos de acordo com os testes que vc fez.

Qualquer coisa, padrequevedo@hotmail.com.


Responder

15/08/2008

Edilcimar

Pelo que descobri, o problema não é com a impressora, mas sim o o Delphi em si, com o DrawText(), se eu o substituir por TextOut() o problema acaba, portanto na minha opinião o problema é com a Borland, mas daí até ela assumir o erro já é outra história!


Responder

16/08/2008

Godzilla_xf

Tenho um banco de dados com um campo Alfa com tamanho 70 caracteres. Tenho o seguinte procedimento dentro de um loop: Var Texto, Temp : String; I, Linha, Coluna : Integer, IndiceV, IndiceH : Real; While not eof do Begin Texto := Trim(FieldByName(´abcd´).AsString; Temp := ´´ For I := 1 to 70 do Temp := Temp + ´.´ Texto := Texto + Temp; Rect.Left := Coluna; Rect.Top := Linha; Rect.Right := Round(375 * IndiceH); Rect.Bottom := (Rect.Top + TextHeight(Texto) + 1) * Round(IndiceV); DrawText(Handle,Pchar(Texto),Length(Texto),Rect,DT_WORDBREAK); Texto := Trim(FieldByName(´efgh´).AsString; Coluna := Round(380 * IndiceH); TextOut(Coluna,Linha,Texto); Linha := Linha + Round(23 * IndiceV); Next; End; Não existe erro de lógica, mas quando mando imprimir uma palavra em determinadas condições o final da frase não aparece. Ex: Supondo que eu tenha 2 registros, Casa = Moradia e Cavalo = Animal, se a casa e o cavalo não tiverem um hífen e o gênero 1) Casa.....................Moradia -> assim aparece correto. Cavalo..................Animal -> também aparece correto. mas se tiver Casa - masc = Moradia e Cavalo - masc = Animal então aparece tudo errado 2) Casa - masc..........Moradia-> assim na coluna da esquerda o que está depois do ´-´ desaparece, ou seja o masc e os pontos e na linha seguinte desaparece o masc e as linhas aparecem ficando assim Casa - Moradia (sumiu o masc e os pontos) Cavalo -......... Animal ( sumiu o masc) Já dei showmessage e todos os campos aparecem na tela conforme estão cadastrados, já criei um arquivo texto onde também tudo aparece de forma correta. Alguém sabe me informar o porquê deste desaparecimento de tudo que está depois do hifen?


Outra possibilidade poderia ser a pagina de codigos da impressora, vc poderia dar uma olhada nela.


Responder

17/08/2008

Edilcimar

A página de códigigo não justifica uma vez que ele só come o que está depois do hifen, e é palavra sem acento, e se eu troco de DrawText() para TextOut() o problema desaparece! Para mim o problema é com o DrawText(), portanto um problema do próprio Delphi 7!


Responder

20/08/2008

Edilcimar

sobe


Responder

23/08/2008

Edilcimar

ninguém ainda viu este bug?


Responder
Opa...

Tenta colocar o sinal de - entre aspas ou apostrofos....

pois a função pode estar tratando o ´ - ´como uma diferença de conjuntos, de maneira inversa ao ´ + ´...

Testa e vê se funciona

T+


Responder

26/08/2008

Edilcimar

Ele não está raciocinando como um sinal de subtração pois se eu escrever
Casa - masc - masc, note que tem 2 ´- masc´ sai
Casa - masc, ou seja come o segundo - masc e mais os pontos!


Responder

31/08/2008

Edilcimar

sobe pela última vez


Responder

31/08/2008

Bononi

Eu acho que o problema é com o driver do Windows, pois a função DrawText() [i:f06ca911aa]renderiza[/i:f06ca911aa] a imagem do texto no [i:f06ca911aa]device[/i:f06ca911aa] atribuído. O ideal seria usar a opção DT_NOPREFIX, pois assim a função vai entender que os simbolos não são ´comandos´. O problema não é no Delphi, porque essa são funções que chamam a API do windows, então pode variar de versão do Windows e dependente da localização.


Responder

31/08/2008

Edilcimar

Ok, vou testar e qualquer coisa volto a escrever


Responder