AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

with ... do begin Problem

Ein Thema von Schlingel · begonnen am 15. Feb 2003 · letzter Beitrag vom 17. Feb 2003
Antwort Antwort
Schlingel

Registriert seit: 15. Feb 2003
Ort: Österreich
67 Beiträge
 
Delphi XE2 Professional
 
#1

with ... do begin Problem

  Alt 15. Feb 2003, 14:58
HELP!!!!!!!!!!!!!!!!!!

Ausgangslage:

procedure a

....
with Image, Canvas do begin // TIMAGE-Komponente
....
end;

procedure b
....
with PdfBox, Canvas do begin // TPDFBOX-Komponente von Synactis (Print direkt im Adobe-PDF-Format)
....
end;

möchte a + b zusammenlegen , weil procedure a+b identisch bis auf o.a.
with - anweisungen

leider ist PdfBox, Canvas vom Typ = TpdfCanvas und Image, Canvas = TCanvas

Anmerkung: Ich verzweifle schön langsam an diesem Problem weil zwar die getrennten proceduren (a/b) einwandfrei funktionieren, nur ist die Wartung ziemlich mühsam da ja Änderungen 'immer' in beiden durchzuführen sind... (ca 70 Anweisungen Rectangel, ellipse, textout etc..) daher ist meine überlegung mittels einer variable zwischen den with pdfbox,canvas und image, canvas umzuschalten... nur leider!!!!
----keine Idee wie ich das lösen sollte...
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 15. Feb 2003, 15:10
Moin Schlingel,

erst einmal herzlich willkommen in der Delphi-Praxis.

Unter der Voraussetzung, dass PDFBox.Canvas von TCanvas abgeleitet ist sollte es so gehen:

Delphi-Quellcode:
procedure WithCanvasDo(const ACanvas : TCanvas);
begin
  with ACanvas do
  begin
    // Was auch immer mit dem Canvas geschehen soll
  end;
end;
Da ja die Eigenschaften bzw. Methoden in beiden Routinen die gleichen sind, wie Du sagst, wäre sonst wohl auch noch folgendes möglich (als Notbehelf):

Delphi-Quellcode:
procedure WithCanvasDo(const ACanvas : TObject);
begin
  with TCanvas(ACanvas) do
  begin
    // Was auch immer mit dem Canvas geschehen soll
  end;
end;
[EDIT]
Ich sollte mal aufmerksamer lesen
Es kommt wohl nur die zweite Variante in Frage, auch wenn diese erst mal getestet werden muss, ob's so dann geht.
BTW: Statt TObject liesse sich natürlich auch der kleinste, beiden Objekten gemeinsame, Vorfahr nehmen.
[/EDIT]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Schlingel

Registriert seit: 15. Feb 2003
Ort: Österreich
67 Beiträge
 
Delphi XE2 Professional
 
#3

immer noch Problem inkompatible Typen. unlösbares Problem?

  Alt 16. Feb 2003, 14:10
funktioniert immer noch nicht...

hab keine Ahnung wie ich diese problem umgehen kann.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 16. Feb 2003, 14:18
Moin Schlingel,

wenn die 2. Variante auch nicht funktioniert stellt sich mir folgende Frage:
Schluckt der Compiler das nicht, oder gibt es zur Laufzeit Fehler?

Von welcher Klasse ist PDFCanvas denn abgeleitet?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Schlingel

Registriert seit: 15. Feb 2003
Ort: Österreich
67 Beiträge
 
Delphi XE2 Professional
 
#5

Dokumentation PDFBOX - Komponente

  Alt 16. Feb 2003, 14:50
Hallo Chris!

Das Problem ist, das sobald ich das Programm starte zwar die Ausgabe in der Image,Canvas funktioniert aber beim Umschalten auf die PdfBoxCanvas ein Zugriffsfehler und ein daraus resultierende Programm-Abbruch passiert.

Im Anhang die Doku zur Komponente... da ich ausserstande bin, mit meinem Anfänger-Wissen Deine Fragen zu beantworten.


Danke für Deine Mühen.
Angehängte Dateien
Dateityp: zip doc.zip (37,0 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
StarFire

Registriert seit: 16. Feb 2003
11 Beiträge
 
#6

Guten Tag

  Alt 16. Feb 2003, 17:00
Guten Tag Schlingel,

warum erklärst du den den Leuten hier nicht, was man Dir in einem anderen Forum schon erklärt hat?

TCanvas und TPdfBoxCanvas sind nicht identisch. Von daher ist der Versuch sie so anzusprechen sinnlos!

Aber Du hast ja die Möglichkeit, noch in einigen anderen Foren die gleiche Frage zu stellen. Vielleicht wird ein Delphi-Programierer darauf aufmerksam und schreibt Delphi und dessen Syntax für Dich um.

Mit Gruss
StarFire
  Mit Zitat antworten Zitat
Schlingel

Registriert seit: 15. Feb 2003
Ort: Österreich
67 Beiträge
 
Delphi XE2 Professional
 
#7
  Alt 16. Feb 2003, 18:16
Hallo Starfire!

Danke für Deinen gutgemeinten Ratschlag!

Nur möchte ich hierzu anmerken...

Eigentlich habe ich vor geraumer Zeit schon festgestellt das das so nicht geht... Eigenlich dachte ich, daß mir irgendjemand zumindest einen Tipp geben könnte wie die Lösungsmöglichkeiten für (mein) Problem sein könnte.

Ausserdem verstehe ich nicht warum ich mir nicht möglichst viele Informationen einholen sollte, insbesondere da mir bis dato noch kein Lösungsansatz bekannt ist.

In einem stimme ich Dir voll und ganz zu.... Ich denke mir 'nur' ein Delphi-Programmierer kennt sich wirklich bei Vererbund / Polymorphie /
Zuweisungskompatibilität etc. wirklich aus. (Joke)

Grüsse
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8
  Alt 16. Feb 2003, 19:27
Zitat von Schlingel:
insbesondere da mir bis dato noch kein Lösungsansatz bekannt ist.
Und was hältst du von der Antwort im anderen Forum?
Hier mal ein Auszug:
Zitat von AHUser:
Die einzige Möglichkeit die dir bleibt, ist eine Zwischen-Klasse schreiben, die die Befehle an TPdfCanvas bzw. TCanvas weiterleitet.
Das ist doch eine Lösungsmöglichkeit. Zwar nicht einfach, aber es würde so funktionieren.
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#9
  Alt 17. Feb 2003, 20:59
Ich verstehe dein Problem nicht wirklich aber sowas könnte dir helfen:

Du verzweigst in der Procedure, indem du das übergebene Object auf seine Art prüfst. Allerdings muss du dann in beiden Fallen TObject übergeben.


procedure dingsdabums( pointer : TObject );
begin
if pointer is TCanvas then
begin

....


end
else
begin

{ lass lieber den else Zweig weg und prüf nochmal das Object
if pointer is TWasduwillst then ... }

end;
end;
  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 10:20 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