![]() |
Delete (String-Routine) nur noch mit Unit System. vorne dran
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? |
Re: Delete (String-Routine) nur noch mit Unit System. vorne
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 |
Re: Delete (String-Routine) nur noch mit Unit System. vorne
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:
Allerdings hatte ich persönlich mit sowas nie Probleme :gruebel:
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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 by Thomas Breitkreuz