![]() |
Mehr als 31 Zeichen bei Printer.Title möglich?
Hallo,
der Titel sagt eigentlich schon alles. :wink: Man kann mehr Zeichen an Printer.Title übergeben, aber nur 31 werden weitergeleitet. In meinem Programm werden mehrere, zusammengehörige Dokumente(Bilder, RTf, Datenlisten) direkt hintereinander ausgegeben, einige auch mehrfach(Kopie 1 bis x, je nach Benutzerangabe). Über Printer.Title möchte ich eine aussagekräftige Bezeichnung vergeben, u.A. auch deshalb weil Printer.Title durch den FreePDF etc. genutzt wird um den Dateinamen zu bilden. Durch die Begrenzung auf 31 Zeichen komme ich so langsam an meine Grenzen, eine eindeutige Bezeichnung zu finden. |
Re: Mehr als 31 Zeichen bei Printer.Title möglich?
Ich weiß, dass ist alles andere als aussagekräftig; aber ich bilde unwichtige, einmalige Dateinamen immer mit dem Datum und der Uhrzeit mit Millisekunden :D
ddmmyyhhmmssnnn.xyz |
Re: Mehr als 31 Zeichen bei Printer.Title möglich?
Also in der WinApi ist der Titel eines Druckjobs theoretisch nicht begrenzt (#0 terminiert).
Aber an vielen Stellen, wo ein Titel auch ein Dateiname sein kann (Hier PrintToFile), begrenzt MS die Länge auf 31 Zeichen (wie beim MAC :mrgreen: ). Interessant wäre, wo die Kürzung passiert und ob man das von Delphi aus (noch mit vertretbaren Mitteln) was ändern kann. Andererseits sollte man vielleicht wirklich auch überlegen, ob man wirklich so lange Dateinamen nimmt. Je nachdem wo man speichert, kommt man ganz schnell an die nächste Grenze (Max_Path). |
Re: Mehr als 31 Zeichen bei Printer.Title möglich?
Das nächste Hindernis könnte dann der Treiber sein, der die Dateinamenlänge begrenzt. Und spätestens da kommt man nicht mehr weiter.
|
Re: Mehr als 31 Zeichen bei Printer.Title möglich?
Hallo,
Zitat:
Zitat:
Zitat:
Im Zusammenhang mit langen Bezeichnungen, optimalöe Länge, zu lang, liest eh keiner mehr, zu kurz, liest auch keiner -da nicht interpretierbar-, läuft es eben immer auf einen Kompromiss aus. Die 31 Zeichen zwingen mich zu einen -von mir nicht gewollten- Kompromiss. :( |
Re: Mehr als 31 Zeichen bei Printer.Title möglich?
Hallo,
hab keinen Weg gefunden die Zeichenanzahl zu erhöhen. Mein aktueller Kompromiss: Ich kürze die Bezeichnungen auf 31 Zeichen und gebe in der Programm-Dokumentation Hinweise zur Interpretation der Bezeichnungen. Aber wenn noch jemand einen Tipp hat ... :) |
Re: Mehr als 31 Zeichen bei Printer.Title möglich?
Das ist eine Einschränkung von Windows, nicht von Delphi. Ich vermute um mehr als 31 Zeichen zu verwenden müsste man
![]() |
Re: Mehr als 31 Zeichen bei Printer.Title möglich?
Hallo,
ein Auszug aus Printers.pas von D3, in Delphi Turbo wird dort nicht eingegrenzt.
Delphi-Quellcode:
Greift Delphi da Windows vor oder wie muss man das interpretieren.
TPrinter = class(TObject)
//... FTitle: string; //... procedure TPrinter.BeginDoc; var CTitle : array[o..31] of Char;//<----! begin //... StrPLCopy(CTitle, Title, SizeOf(CTitle) - 1); //... with docInfo do //... lpszDocName := CTitle; An welcher Stelle schränkt Windows dann ein, wo müsste ich da suchen? |
Re: Mehr als 31 Zeichen bei Printer.Title möglich?
Es steht auf anderen Seiten, dass nur 31 Zeichen möglich seien. Und da in Turbo Delphi die Beschränkung von Delphi aus nicht drin ist, muss das ja auch so sein.
Wie gesagt: Ich vermute, dass das bei StartDoc tatsächlich so ist und bei der genannten Alternative StartDocPrinter vielleicht nicht. Ausprobiert habe ich es nicht. Funktionieren muss es jedenfalls irgendwie, da andere Programme die Beschränkung ja auch nicht haben (bzw. neuere nicht, ältere schon). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz