Printer.PrinterIndex, Identivier not found!

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
mollilinux

Printer.PrinterIndex, Identivier not found!

Beitrag von mollilinux »

hallo zusammen, ich bin neu hier und habe schon das erste Problem. Bin gerade dran, ein Adress Programm zu schreiben. Ich verwende LazReport. Das Problem liegt bei der Drucker Funktion. Habe die Anweisungen der Dokumentation befolgt, bei deim "Drucken" Abscnitt: http://wiki.freepascal.org/Tutorial_de_LazReport" onclick="window.open(this.href);return false;

Wenn ich das mein Adressprogramm starten will, zum Testen, gibt Lazarus folgende Fehlermeldung aus im Nachrichten Fenster:

Code: Alles auswählen

Error: Identifier not found "PrinterIndex"
Error: Illegal expression
...
Ich habe auch in der USES-Klausel "Printer" angegeben. Eigendlich müsste es gehen. Woran kann es liegen? Kann mir jemand helfen?

Der Problemcode:

Code: Alles auswählen

procedure TMainForm.ToolButton6Click(Sender: TObject);
 
var
   FromPg, ToPg, Cpy: Integer;
   ind: Integer;
   St: String;
   Collap: Boolean;
   PrinterIndex: Integer;
begin
   St:=ExtractFilePath(ParamStr(0));
   frReport1.LoadFromFile(St+'molliadress-print.frf');
    ind:= Printer.PrinterIndex;
   if not frReport1.PrepareReport then Exit;
  with PrintDialog1 Do
  begin
 ind:= Printer.PrinterIndex;
       Copies:= 1;           
       Collate:= True;     
       FromPage:= 1;     
       ToPage:= frReport1.EMFPages.Count; 
      MaxPage:= frReport1.EMFPages.Count; 
       if Execute then    
       begin
            if (Printer.PrinterIndex < > ind )
               or frReport1.CanRebuild 
               or frReport1.ChangePrinter(ind, Printer.PrinterIndex) then
               frReport1.PrepareReport;
     if PrintDialog1.PrintRange = prPageNums then 
     begin
          FromPg := PrintDialog1.FromPage; 
          ToPg := PrintDialog1.ToPage;    
     end;
          Cpy :=PrintDialog1.Copies;   
         Collap :=PrintDialog1.Collate;  
      exemplares ordenados  (Collap))
 frReport1.PrintPreparedReport(FromPg, ToPg, Cpy, Collap);
    end;
  end;
end;
Ich danke euch im Voraus

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Willkommen im Forum.

Ich hab mal die identishen beiden anderen Themen gelöscht und die richtigen Code-Tags (

Code: Alles auswählen

) gesetzt ;)
Johannes

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Die Unit heisst Printers (mit s am Schluss).
Eventuell musst du noch das printer4lazarus Package in die Projektabhängikeit aufnehmen.
Bei Problemen mit Printerindex gibt's hier noch einen neueren Patch:
http://bugs.freepascal.org/view.php?id=11463" onclick="window.open(this.href);return false;
Dann also evtl SVN ziehen.

mollilinux

Beitrag von mollilinux »

Ich konnte den Patch nicht installieren. Ich habe lazarus problemlos mit gentoo ebuild erstellen lassen. Die SVN Version, die man natürlich manuell kompilieren muss gibt Fehler aus. Habe googled aber nichts passendes gefunden.

Nun: Kann man das oben genannte Problem (PrinterIndex) durch einen anderen Befehl ersetzen, damit ich trotzdem drucken kann? Ist es möglich?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Den Patch brauchs du nicht. Bei mir funktioniert PrinterIndex seit über einem jahr problemlos.
Hast du irgendwo eine andere Variable namens Printer deklariert ? Poste mal die gesamte Unit.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mollilinux

Beitrag von mollilinux »

Also hier die ganze Unit (Attachment). Ich hoffe du kannst das Problem herausfinden.

Die Unit ist zu gross um darstellen zu können. Ich habe die Unit angehängt.

mollilinux

Beitrag von mollilinux »

Also hier die ganze Unit (Attachment). Ich hoffe du kannst das Problem herausfinden.

Die Unit ist zu gross um darstellen zu können. Ich habe die Unit angehängt.
Sry, habe die Unit vergessen anzuhängen.


Frage zum Forum:

Wenn ich einen Beitrag gemacht habe, aber eine Datei vergessen anzuhängen, wie kann ich sie dann anhägen?
Wenn bei meinem beitrag auf Edit drücke, kann ich nur meinen Beitragtext bearbeiten, aber keine dateianhänge machen.

*Ich werde bald mit diesem Forum besser zurecht kommen, ich meine mit der Bedienung*

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

mollilinux hat geschrieben:Frage zum Forum:

Wenn ich einen Beitrag gemacht habe, aber eine Datei vergessen anzuhängen, wie kann ich sie dann anhägen?
Wenn bei meinem beitrag auf Edit drücke, kann ich nur meinen Beitragtext bearbeiten, aber keine dateianhänge machen.
Anschließend nochmal rechts unter dem Textfeld auf: "Zum vollen Editor wechseln".
Dann hast du den selben Editor, wie beim erstellen des Beitrages.

Alternativ kannst du unter Einstellungen (Oben im Seitenkopf) >> Ajax Features >> Benutze Ajax Schnelledit das zwischengeschaltete Textfeld beim bearbeiten auch deaktivieren und kommst danach immer sofort zum ausführlichen Editor.
Johannes

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

mollilinux hat geschrieben:Ich konnte den Patch nicht installieren. Ich habe lazarus problemlos mit gentoo ebuild erstellen lassen. Die SVN Version, die man natürlich manuell kompilieren muss gibt Fehler aus. Habe googled aber nichts passendes gefunden.
Hallo mollilinux, von mir auch ein Willkommen.

Fast genauso aktuell wie die SVN-Version die der tägliche Schnappschuss, den du hier herunterladen kannst:

http://snapshots.lazarus.shikami.org/lazarus/" onclick="window.open(this.href);return false;

Viele Grüße, Euklid

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

uses
Printer,

hättest du theos beitrag gelesen hättest du schon lang ein uses printers draus gemacht und gut wär.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mollilinux

Beitrag von mollilinux »

hättest du theos beitrag gelesen hättest du schon lang ein uses printers draus gemacht und gut wär.
Ja geanu. Printer zu Printers habe ich übersehen. Doch ein Problem habe ich noch:

Wenn ich nun mein Programm in lazarus starte, kann ich problemlos meine Datenbank drucken. Wenn ich aber das Programm unabängig von lazarus starte und anschliessend drucken will gibt das mein Programm eine Fehlermeldung aus.

Ich habe die Fehlermeldung als Attachment angehängt.

Warum erscheint immer diese Fehlermeldung? eingendlich müsste ich unabhängig von lazarus drucken können.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Es wäre sehr sinvoll wenn du herausbekommen könntest wo der fehler auftritt. Lazarus Programme schreiben schönerweise einen Backtrace auf die Kommandoziele wenn eine Exception auftritt...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mollilinux

Beitrag von mollilinux »

Also, hier der Ablauf (Kommandozeile):

Aber ich finde komisch, dass wenn das Programm unter Lazarus gestartet wird, dass die Fehlermeldung nicht auftaucht, und dass er das ReportFile findet. Wie gesagt, wenn ich das Programm unabhängig von Lazarus starte taucht dieses Problem auf.

Ich hoffe Ihr könnt mir weiterhelfen.

Code: Alles auswählen

molli@penguin ~/Desktop/MolliAdress $ ./addrbook
TApplication.HandleException Illegal character in format string
  Stack trace:
  $080A9F23
  $080AA402
  $080A9BBE
  $080A92E4
  $082986B4  TPOSTSCRIPTPRINTERCANVAS__BEGINDOC,  line 934 of postscriptcanvas.pas
  $0822CC6E  TPRINTER__BEGINDOC,  line 295 of printers.pas
  $082748E6  TFRREPORT__DOPRINTREPORT,  line 7800 of lr_class.pas
  $082745A6  TFRREPORT__PRINTBEFOREMODAL,  line 7639 of lr_class.pas
  $082A7D3F  TFRPROGRESSFORM__DOBEFOREMODAL,  line 86 of lr_progr.pas
  $0807FC5A  TAPPLICATION__PROCESSASYNCCALLQUEUE,  line 832 of ./include/application.inc
  $0807EB87  TAPPLICATION__IDLE,  line 295 of ./include/application.inc
  $0807C3B4  TCUSTOMFORM__SHOWMODAL,  line 2013 of ./include/customform.inc
  $082A7CCB  TFRPROGRESSFORM__SHOW_MODAL,  line 71 of lr_progr.pas
  $08274757  TFRREPORT__PRINTPREPAREDREPORT,  line 7667 of lr_class.pas
  $080751C1  TMAINFORM__TOOLBUTTON6CLICK,  line 497 of frmmain.pas
  $08134829  TCONTROL__CLICK,  line 2043 of ./include/control.inc
  $080E5B91  TTOOLBUTTON__CLICK,  line 629 of ./include/toolbutton.inc
molli@penguin ~/Desktop/MolliAdress $

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ahh ich glaub damit hatte ich auch mal probleme. Schalte einfach mal die Progressanzeige aus (Ist ne property von TfrReport)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mollilinux

Beitrag von mollilinux »

Also, ich habe nun die Eigenschaft bei TfrReport (ShowProgress) auf False gesetzt. Nun wenn ich mein Adressprogramm unabhängig von Lazarus starte kommt wieder die selbe Fehlermeldung.

Falls du was damit anfangen kannst, hier ist die aktuelle Kommandozeilen Ausgabe.

Warum die Fehlermeldung "illegal string"? Muss ich einen String im Quellcode abändern? Wenn ja, welchen?

Code: Alles auswählen

molli@penguin ~/Desktop/MolliAdress $ ./addrbook
TApplication.HandleException Illegal character in format string
  Stack trace:
  $080A9F33
  $080AA412
  $080A9BCE
  $080A92F4
  $082986C4  TPOSTSCRIPTPRINTERCANVAS__BEGINDOC,  line 934 of postscriptcanvas.pas
  $0822CC7E  TPRINTER__BEGINDOC,  line 295 of printers.pas
  $082748F6  TFRREPORT__DOPRINTREPORT,  line 7800 of lr_class.pas
  $082745B6  TFRREPORT__PRINTBEFOREMODAL,  line 7639 of lr_class.pas
  $08274776  TFRREPORT__PRINTPREPAREDREPORT,  line 7670 of lr_class.pas
  $080751CE  TMAINFORM__TOOLBUTTON6CLICK,  line 498 of frmmain.pas
  $08134839  TCONTROL__CLICK,  line 2043 of ./include/control.inc
  $080E5BA1  TTOOLBUTTON__CLICK,  line 629 of ./include/toolbutton.inc
  $080E46D6  TTOOLBUTTON__MOUSEUP,  line 118 of ./include/toolbutton.inc
  $08133EA7  TCONTROL__DOMOUSEUP,  line 1643 of ./include/control.inc
  $081346A4  TCONTROL__WMLBUTTONUP,  line 1984 of ./include/control.inc
  $080676E9
  $0812B549  TWINCONTROL__WNDPROC,  line 4651 of ./include/wincontrol.inc
molli@penguin ~/Desktop/MolliAdress $

Antworten