Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Ausgabe eines Blobfeldes auf den Drucker (https://www.delphipraxis.net/169585-ausgabe-eines-blobfeldes-auf-den-drucker.html)

khh 30. Jul 2012 15:04

Ausgabe eines Blobfeldes auf den Drucker
 
Hallo zusammen,
ich habe in einer DB ein Blobfeld, welches schön mittels dbmemo gefüllt wird.
Die Zeilenumbrüche sind an der richtigen Stelle, so wie sie im Memo eingegeben werden.

ich lese diese memo zur Druckausgabe in einen string und übergebe diesen an stringlist.text

In einer Schleife ( for i := 0 to sl.Count-1 do )
wird der Inhalt per Printer.Canvas.TextOut....
auf den Drucker ausgegeben. Dabei natürlich die Druckposition hochgezählt.
Irgendwie steh ich aber mal wieder auf dem Schlauch.
Wie krieg ich das hin, dass die Zeilenumbrüche berücksichtigt werden?
Das sollte doch viel einfacher gehen, oder ?

Gruss KHH

p80286 30. Jul 2012 15:10

AW: Ausgabe eines Blobfeldes auf den Drucker
 
Gehen wir davon aus, daß die Zeilenumbrüche CRLF sind, dann solltest Du dies Aufteilung mit Stringliste[i] zurück erhalten.

Wenn der Ausdruck nicht so aussieht wie Du ihn erwartest, bräuchten wir noch ein paar Details.

Gruß
K-H

khh 30. Jul 2012 15:24

AW: Ausgabe eines Blobfeldes auf den Drucker
 
Das Eigenartige ist folgendes :
in den ersten beiden Zeilen habe ich am Ende #10#13#10
hier funktioniert der Zeilenumbruch, obwohl hier ja wohl ein #10 zu viel ist.
Auch die Stringliste ist hier korrekt.


danach habe ich #13#10#10#10 als "Zeilenumbruch" , wohl die Ursache des Fehlers :-(

Aber woher kommen diese seltsamen Werte?

p80286 30. Jul 2012 16:54

AW: Ausgabe eines Blobfeldes auf den Drucker
 
Ich kenne als Verursacher, word und Wordpad aber es gibt da bestimmt noch ein paar andere.

ersetz doch jedes alleine stehendes #10 durch #13#10 und fertig.
Delphi-Quellcode:
for i:=length(mytext) down to 1 do
  if mytext[i]=#10 then
    if (i>1) and (mytext[i-1]<>#13) then
      insert(#13,mytext,i)
    else
      if i=1 then
        insert(#13,mytext,i) ;
Nich soo der Bringer aber wohl schneller als Ansireplace...

Gruß
K-H

khh 30. Jul 2012 18:46

AW: Ausgabe eines Blobfeldes auf den Drucker
 
ich danke dir

himitsu 30. Jul 2012 19:02

AW: Ausgabe eines Blobfeldes auf den Drucker
 
Delphi-Quellcode:
with TStringList.Create do
  try
    Text := mytext;
    mytext := Text;
  finally
    Free;
  end;
Aber da du es doch schon in der SL hattest, dann sind dieser die reingegebenen Zeilenumbrüche egal und in den
Delphi-Quellcode:
mytext.String[i]
, bzw.
Delphi-Quellcode:
mytext[i]
sind keine mehr enthalten.
(es kommt aber auch darauf an, wie man die StringList befüllt)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz