AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Delete (String-Routine) nur noch mit Unit System. vorne dran
Thema durchsuchen
Ansicht
Themen-Optionen

Delete (String-Routine) nur noch mit Unit System. vorne dran

Ein Thema von Andreas L. · begonnen am 13. Jul 2007 · letzter Beitrag vom 14. Jul 2007
Antwort Antwort
Andreas L.
(Gast)

n/a Beiträge
 
#1

Delete (String-Routine) nur noch mit Unit System. vorne dran

  Alt 13. Jul 2007, 23:42
Hi,
ich bastel mal wieder an einer Komponente. Dort habe ich die procedure Delete(Index: Integer); deklariert. Jetzt möchte ich in einer anderen procedure gerne die Delete-Routine (zum löschen eines Teilstrings) verwenden. Jetzt muss ich immer System. davor schreiben, weil Delphi sonst denkt es wäre meine weiter oben deklarierte Procedure. Wie bekomme ich das wieder in den Griff?
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Delete (String-Routine) nur noch mit Unit System. vorne

  Alt 13. Jul 2007, 23:56
Hallo Andreas,

eine Namensüberdeckung bei Routinen läßt sich auf mehrere Arten lösen:

1. Durch overload, falls die Parameterlisten unterschiedlich sind. Dieser Weg ist dir verbaut, da du die RTL-Units nicht ändern kannst bzw. solltest.
2. Durch eine Qualifizierung (z.B. System.Delete). Diese Lösung gefällt dir offenbar nicht.
3. Durch die Umbenennung einer der beiden Routinen.

Du solltest Lösung #3 wählen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Delete (String-Routine) nur noch mit Unit System. vorne

  Alt 14. Jul 2007, 01:13
3. ist innerhalb einer Klasse suboptimal. Da die Funktion "Delete(Index: Integer)" bestimmtes Standardverhalten suggeriert. ich würde es also qualifizieren, oder, wenn das noch zu viel Arbeit ist und man einen modernen Compiler hat, wrappen:

Delphi-Quellcode:
type
  Dingsbums = class
  public
    procedure Delete(Index: Integer);
  private
    procedure DoDelete(Index: Integer);
  end;

...

procedure Dingsbums.DoDelete(Index: Integer); inline; //das inline SOLLTE den Compiler dazu anhalten, die Funktion zu inlinen.
begin
  self.Delete(Index);
end;
Allerdings hatte ich persönlich mit sowas nie Probleme
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  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 14: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