AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge RaveReport Error #40 Boolean expression expected

RaveReport Error #40 Boolean expression expected

Ein Thema von TUX_der_Pinguin · begonnen am 27. Jan 2014 · letzter Beitrag vom 6. Feb 2014
Antwort Antwort
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: RaveReport Error #40 Boolean expression expected

  Alt 6. Feb 2014, 09:53
So ich habe jetzt noch mal ein kleines Tool gebastelt um alles andere von dem eigentlichen Projekt auszuschließen.

Ich habe einen einfachen Report erstellt, eine Region mit einem Databand auf den wird dann zur Laufzeit ein DataText Objekt plaziert.
Und mit Hilfe eines Ereignis welches ebenfalls zur Laufzeit erstellt wird soll der Text eingefärbt werden.

Durch den Klick auf den Button wird der Report aufgerufen und als PDF Datei exportiert und anschließend wird das PDF geöffnet.

Und wieder kann ich dieses nur einmal machen, beim zweiten Versuch erhalte ich eine Fehlermeldung dies mal ist es jedoch "General Compiler Error".
Das liegt aber wohl nur daran das ich Integer an den Report übergebe und keine Strings mehr, bei Strings würde ich wieder die
ursprüngliche Fehlermeldung "Error #40 Boolean expression expected" erhalten.

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  Report: TRaveReport;
  Page: TRavePage;
  DataBand: TRaveDataBand;
  DataView: TRaveDataView;
  DataText: TRaveDataText;
  Event: TRaveSimpleEvent;

begin
  //Rave für PDF Export vorbereiten...
  RvSystem.DefaultDest := rdFile;
  RvSystem.DoNativeOutput := False;
  RvSystem.RenderObject := RvRenderPDF;
  RvSystem.OutputFileName := '.\test.pdf';
  RvSystem.SystemSetups := RvSystem.SystemSetups - [ssAllowSetup];
  RvSystem.SystemOptions := RvSystem.SystemOptions - [soShowStatus];

  //Report öffnen
  RvProject.ProjectFile := '.\test.rav';
  RvProject.Open;

  //Komponenten ermitteln
  Report := RvProject.ProjMan.FindRaveComponent('Test', nil) as TRaveReport;
  Page := RvProject.ProjMan.FindRaveComponent('Page1', Report) as TRavePage;
  DataBand := RvProject.ProjMan.FindRaveComponent('DataBand1', Page) as TRaveDataBand;
  DataView := RvProject.ProjMan.FindRaveComponent('DataView1', Page) as TRaveDataView;
  CreateFields(DataView, nil, nil, True);

  //Feld erstellen
  DataText := DataBand.CreateChild(TRaveDataText, 'dtData') as TRaveDataText;
  DataText.DataField := 'DataFeld';
  DataText.DataView := DataView;
  DataText.Top := 0;
  DataText.Left := 0 / RvProject.ProjMan.UnitsFactor;
  DataText.Width := 15 / RvProject.ProjMan.UnitsFactor;

  //Ereignis erstellen
  Event := TRaveSimpleEvent.Create;
  Event.Name := 'DataFeldOnBeforePrint';
  Event.ModuleOwner := Page;
  Event.Sender := DataText;
  Event.Owner := DataText;
  Event.Body := 'if DataView1Color.AsInteger <> '+IntToStr(clBlack)+' then'+
                ' Self.Color := DataView1Color.AsInteger;'+
                'end;';

  DataText.OnBeforePrint := Event;

  //Events kompilieren..
  RvProject.ProjMan.Compile;

  //Report ausführen...
  RvProject.ExecuteReport('Test');

  //Report schließen...
  RvProject.Close;

  ShellExecute(Application.Handle, 'open', PWideChar('.\test.pdf'), nil, nil, SW_NORMAL);

end;

Der Quellcode, kompilierte Exe und die Report Datei habe ich angehängt.
Angehängte Dateien
Dateityp: zip Rave Test.zip (744,3 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: RaveReport Error #40 Boolean expression expected

  Alt 6. Feb 2014, 10:59
Du solltest das TRaveSimpleEvent nach dem Schliesen des Reports mit Free freigeben; ansonsten hast du ein Speicherleck.
Es könnte sogar sein, dass das alte Event irgendwie noch gecached wird und sich deshalb der Compiler beschwert.
fork me on Github
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: RaveReport Error #40 Boolean expression expected

  Alt 6. Feb 2014, 12:37
Wenn ich nach RvProject.Close versuche das Event freizugeben mit Event.Free dann kommt die Fehlermeldung "Ungültige Zeigeroperation" und nicht mal beim ersten mal lässt sich der Report ausführen.

Was ich mittlerweile glaube ist das die Rave Report (7.6.2.) Komponente verbuggt ist und das gar nicht funktionieren kann, was sehr schade wäre.

Ich habe das Tool noch mal so geändert das die Komponenten RvProject, RvSystem und RvRenderPDF zur laufzeit erzeugt werden und auch
wieder freigegeben werden. Ich dachte irgendwas wird beim ersten ausführen gemacht was nicht verworfen wird und beim nächsten mal zu Problemen führt.

Das einzigste was hilft die ganze Anwendung beenden, aber das ist ja nicht gerade akzeptabel.
Bitte lieber Kunde du kannst nur einmal ein Dokument als PDF exportieren oder drucken danach starte bitte die Anwendung neu.

Geändert von TUX_der_Pinguin ( 6. Feb 2014 um 12:40 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:40 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