AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Mehr als 31 Zeichen bei Printer.Title möglich?
Thema durchsuchen
Ansicht
Themen-Optionen

Mehr als 31 Zeichen bei Printer.Title möglich?

Ein Thema von Lannes · begonnen am 4. Jul 2009 · letzter Beitrag vom 6. Jul 2009
Antwort Antwort
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#1

Mehr als 31 Zeichen bei Printer.Title möglich?

  Alt 4. Jul 2009, 22:21
Hallo,

der Titel sagt eigentlich schon alles.

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.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von BackOrifice
BackOrifice

Registriert seit: 6. Jun 2005
74 Beiträge
 
Delphi 2007 Architect
 
#2

Re: Mehr als 31 Zeichen bei Printer.Title möglich?

  Alt 4. Jul 2009, 22:39
Ich weiß, dass ist alles andere als aussagekräftig; aber ich bilde unwichtige, einmalige Dateinamen immer mit dem Datum und der Uhrzeit mit Millisekunden
ddmmyyhhmmssnnn.xyz
Henning
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Mehr als 31 Zeichen bei Printer.Title möglich?

  Alt 4. Jul 2009, 22:48
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 ). 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).
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Mehr als 31 Zeichen bei Printer.Title möglich?

  Alt 4. Jul 2009, 22:52
Das nächste Hindernis könnte dann der Treiber sein, der die Dateinamenlänge begrenzt. Und spätestens da kommt man nicht mehr weiter.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#5

Re: Mehr als 31 Zeichen bei Printer.Title möglich?

  Alt 4. Jul 2009, 23:34
Hallo,

Zitat von Satty67:
Interessant wäre, wo die Kürzung passiert und ob man das von Delphi aus (noch mit vertretbaren Mitteln) was ändern kann.
Genau dort wollte ich hin

Zitat von Satty67:
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).
bis Max-Path wollte ich eigentlich nicht, ein paar Zeichen, sagen wir mal 10 mehr würden mir ausreichen.

Zitat von Luckie:
Das nächste Hindernis könnte dann der Treiber sein, der die Dateinamenlänge begrenzt. Und spätestens da kommt man nicht mehr weiter.
Also meine Drucker und FreePDF grenzen nicht weiter ein, wenn es dann ein anderer Treiber macht, kann man es nicht ändern.
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.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#6

Re: Mehr als 31 Zeichen bei Printer.Title möglich?

  Alt 6. Jul 2009, 13:53
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 ...
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.647 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Mehr als 31 Zeichen bei Printer.Title möglich?

  Alt 6. Jul 2009, 14:50
Das ist eine Einschränkung von Windows, nicht von Delphi. Ich vermute um mehr als 31 Zeichen zu verwenden müsste man StartDocPrinter statt StartDoc verwenden (wie es in der Unit Printers verwendet wird).
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#8

Re: Mehr als 31 Zeichen bei Printer.Title möglich?

  Alt 6. Jul 2009, 15:42
Hallo,

ein Auszug aus Printers.pas von D3, in Delphi Turbo wird dort nicht eingegrenzt.

Delphi-Quellcode:
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;
Greift Delphi da Windows vor oder wie muss man das interpretieren.

An welcher Stelle schränkt Windows dann ein, wo müsste ich da suchen?
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.647 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Mehr als 31 Zeichen bei Printer.Title möglich?

  Alt 6. Jul 2009, 15:47
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).
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 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