Announcement

Collapse
No announcement yet.

Schutzverletzung durch QuickReport

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Schutzverletzung durch QuickReport

    Ich habe über das Delphi-Menü - NEU einen Bericht erstellt. Nachdem ich diesen Bericht aufgerufen habe:

    rep13:=Trep13.create(self);
    rep13.previewModal;
    rep13.Free;

    bekomme ich beim nächsten Mal eine Schutzverletzung und manchmal die Fehlermeldung, daß eine Komponente mit dem Namen QPreview... schon existiert. Was habe ich beim Erzeugen falsch gemacht? (bzw. beim Zerstören?)

    Hoffe auf Hilfe!
    Romy

  • #2
    Hallo,

    um sicherzugehen, das die Report-Instanz auch bei einer stillen Exception in jedem Fall am Ende wieder zerstört wird, würde ich zuerst den Aufruf in einen Ressourcenschutzblock einkapseln. Das folgende Beispiel demonstriert die Aufrufe:
    <pre>
    procedure TFormKonto.BitBtnPrintClick(Sender: TObject);
    begin
    FormQRListKonto := TFormQRListKonto.Create(Application);
    try
    FormQRListKonto.QuickReport.Preview;
    finally
    FormQRListKonto.Release;
    end
    end;
    </pre>
    Der Aufruf von <b>Release</b> stellt sicher, das die Instanz erst dann zerstört wird, wenn alle anstehenden Windows-Botschaften korrekt aus der Warteschlange ausgelesen und beantwortet wurden

    Comment


    • #3
      Hallo!
      Ich hatte ebenfalls einige Probleme mit QR.
      Bei Delphi 4 mußte ich feststellen, daß entgegen der Dokumentation
      das Programm "weiterläuft" wenn der Dialog "Druckereinrichtung" aufgerufen wurde (Setze mal auf "rep13.previewModal" einen Haltepunkt).
      Ergebnis: Ich erzeuge meine Reporte nicht mehr dynamisch.

      Thoma

      Comment


      • #4
        Ich habe den Aufruf in einen Try Finally Block gepackt:
        rep13:=Trep13.create(self);
        TRY
        rep13.previewModal;
        finally
        rep13.free;
        end;
        aber bekomme dennoch die Schutzverletzung... Erst bei zweiten Aufruf. Später meldet er mir, daß es eine Komponente mit der bezeichnung schon gibt. Welche Möglichkeiten gibt es sonst diesen Qucikreport zu zerstören. RELEASE erkennt er nicht. Der Qickreport liegt auf keinem Formular!

        Rom

        Comment


        • #5
          Hallo!
          Welches Delphi und QR verwendest Du?
          Hast Du kontrolliert ob das Programm trotz PreviewModal "weiterläuft"?

          Thoma

          Comment


          • #6
            Diese Probelm ist bekannt: Quick-Report zur Laufzeit erzeugen, Preview Zerstören, neuer preview: Fehler. Die Reporting-newsgroup von Borland ist voll von diesen fehlermeldungen.<br>
            Dieser Fehler ist schon seit mehreren Quick-report-versionen bekannt (auch qusoft) aber nicht gefixt worden. Der fehler ist, dass quickrep selbst den preview nicht richtig zerstört beim beenden, so dass die instanz noch im speicher ist, und somit nicht neu erzeugt werden kann.
            <br>Der beste Workaround um dieses Problem ist, ein anderes Reporting-Tool zu benutzen....:-) <br>
            auf der qusoft seite ( http://www.qusoft.com ) gibt es eine knowledgebase, doch die soll ziemlich nutzlos sein. Wenn du eine lösung findest, wäre ich übrigens sehr interressiert dran...:-) <br><br>
            CU Kaputni

            Comment


            • #7
              Hallo Leute,

              also es stimmt wirklich, daß das Programm ganz einfach nach dem PreviewModal weiter den Quelltext abarbeitet ohne zu Warten. Deswegen habe ich alles auf das normale Preview umgestellt und danach den Bericht zerstört. Bisher funktioniert das ganze erst mal so!

              Früher habe ich auch mit Berichtsgeneratoren wie Crystal Report etc gearbeitet, aber man muß sich ja auch an die gegebenen Mittel im neuen Umfeld anpassen!

              Rom

              Comment

              Working...
              X