AGB  ·  Datenschutz  ·  Impressum  







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

Frage zu überladenen Methoden

Ein Thema von Gambit · begonnen am 29. Mär 2005 · letzter Beitrag vom 29. Mär 2005
Antwort Antwort
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#1

Frage zu überladenen Methoden

  Alt 29. Mär 2005, 12:27
Hallo,

ich habe folgende Methode:

transferData(const aList: TStrings; UpdatePicturePath: boolean; aQuery: TADOQuery): boolean;

diese Methode läd Bilder auf einen FTP-Server.
In Abhängigkeit von der boolschen Variable UpdatePicturePath soll zusätzlich eine Datenbank aktualisiert werden. aQuery gibt an um welche Datenbank es sich handelt.

Das funzt auch soweit. Jetzt soll die Funktion aber nicht nur für ADO-Querys funktionieren sondern auch für ZQuerys oder ganz ohne Querys(nur FTP-Transfer).
Das könnte ich ja erreichen, indem ich die Methode überlade:

einmal:
transferData(const aList: TStrings): boolean;overload dann
transferData(const aList: TStrings; aQuery: TADOQuery): boolean;overload und:
transferData(const aList: TStrings; aQuery: TZDOQuery): boolean;overload und UpdatePicturePath bräuchte ich dann nicht mehr...

Meine Frage ist, ob man dafür auch theoretisch noch ein anderes Konstrukt nehmen könnte. Vielleicht eines wo man den Parameter aQuery nur angeben muss, wenn UpdatePicturePath = true ist. Und es dann auch egal ist, obs nun eine ADOQuery oder eine ZQuery ist.
Aber sowas gibts doch wohl nicht, oder?

Gruß

Gambit
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Frage zu überladenen Methoden

  Alt 29. Mär 2005, 12:37
Delphi-Quellcode:
transferData(const aList: TStrings; UpdatePicturePath: boolean = false; aQuery: TObject = nil): boolean;
begin
  if aQuery id TADOquery then
  begin
    ....
  end
  else
  if aQuery is TZDOQuery then
  begin
    ....
  end;
end;
Könnte klappen Auf jeden Fall musst du dann nur noch die Stringliste als Parameter übergeben.
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#3

Re: Frage zu überladenen Methoden

  Alt 29. Mär 2005, 12:53
das hört sich ja erstmal ganz nachvollziehbar an.

wenn ich jetzt allerdings beispielsweise

aQuery.sql.clear schreiben möchte, meckert der Compiler verständlicherweise, dass er sql nicht kennt...

kann ich dann:

TADOQuery(aQuery).SQL.Clear; schreiben?
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Frage zu überladenen Methoden

  Alt 29. Mär 2005, 12:57
Nun ja. Es ist aber nachvollziehbar.
So geht das :
Delphi-Quellcode:
transferData(const aList: TStrings; UpdatePicturePath: boolean = false; aQuery: TObject = nil): boolean;
begin
  if aQuery is TADOquery then
  begin
   TADOquery(aQuery).sql....
  end
  else
  if aQuery is TZDOQuery then
  begin
   TZDOquery(aQuery).sql....
  end;
end;
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#5

Re: Frage zu überladenen Methoden

  Alt 29. Mär 2005, 13:00
Jepp, Danke!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Frage zu überladenen Methoden

  Alt 29. Mär 2005, 13:02
Moin!

Aber auch beachten das aQuery nun auch Nil sein kann!

MfG
Muetze1
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#7

Re: Frage zu überladenen Methoden

  Alt 29. Mär 2005, 13:14
Zitat von Muetze1:

Aber auch beachten das aQuery nun auch Nil sein kann!
bedeutet?
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Frage zu überladenen Methoden

  Alt 29. Mär 2005, 13:18
Zugriff Verletzung.
Besser:
Delphi-Quellcode:
 if Assigned(aQuery) then
 begin
 end;
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#9

Re: Frage zu überladenen Methoden

  Alt 29. Mär 2005, 13:27
Wenn du aQuery aber nur in den is-Blöcken benutzst, wird nil schon von is abgefangen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#10

Re: Frage zu überladenen Methoden

  Alt 29. Mär 2005, 14:17
ja, nur in den is-Blöcken. Sollte eignetlich nix schief gehen...

Danke

Gambit
  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 23:02 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