AGB  ·  Datenschutz  ·  Impressum  







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

Hilfe beim Überladen einer Funktion

Ein Thema von Pseudemys Nelsoni · begonnen am 5. Dez 2003 · letzter Beitrag vom 5. Dez 2003
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Hilfe beim Überladen einer Funktion

  Alt 5. Dez 2003, 10:18
hoiiii

Delphi-Quellcode:
function CountWords(s: string; c: char): integer; overload;
function CountWords(s: string; c: char): string; overload;

wie könnte ich diese funktion überladen? die argumente sind gleich, nur der rückgabetyp ist anders...muss ich die variable in das die funktion das ergbnis gibt etwa mit übergeben? wäre doch sinnlos wenn da ne extra variable dann in den argumenten ist oder?

also wenn jemand n tip hat, bitte posten



Edit: achja übrigens, der compiler gibt die fehlermeldung aus:

Zitat:
[Fehler] gcc.pas(9): Deklaration von 'CountWords' unterscheidet sich von vorheriger Deklaration
es soll wohl heissen "unterscheidet sich NICHT von vorheriger Deklaration" naja, die hilfe hat auch genug fehler in der übersetzung
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Hilfe beim Überladen einer Funktion

  Alt 5. Dez 2003, 10:28
Hallo Pseudemys Nelsoni,

selbst wenn Du die Deklaration der Funktionen fehlerfrei hinbekommen solltest, bekommst Du spätestens beim Einsatz mit der "erweiterten Pascal-Syntax" (Funktionen können auch ohne den Rückgabewert zu verwenden, benutzt werden) Probleme, weil der Compiler an der Signatur nicht entscheiden kann, welche Version gemeint ist. Oder kannst Du mir das vielleicht sagen?
Delphi-Quellcode:
var
  myVar: Variant;
begin
  myVar:= CountWords('A sentence with spaces.', #32);
Warum machen die unterschiedlichen Rückgabewerte Sinn?
gruß, choose
  Mit Zitat antworten Zitat
Argent27

Registriert seit: 13. Okt 2003
Ort: Kassel
13 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Hilfe beim Überladen einer Funktion

  Alt 5. Dez 2003, 10:46
Mach doch kurzerhand eine Prozedur draus !

function CountWords(s: string; c: char): integer; overload;
function CountWords(s: string; c: char): string; overload;

könntest du auch wie folgt abbilden:

procedure CoundWords(s: String; c: Char; var Result : Integer); overload;
procedure CoundWords(s: String; c: Char; var Result : String); overload;

Damit solltest du deinen Weg gehen können.

Gruß
Argent
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#4

Re: Hilfe beim Überladen einer Funktion

  Alt 5. Dez 2003, 11:02
hoi^^

Zitat:
Funktionen können auch ohne den Rückgabewert zu verwenden, benutzt werden
daran hab ich nicht gedacht

Zitat:
Oder kannst Du mir das vielleicht sagen?
nein, kann ich nicht, aber so:

Code:
function CountWords(s: string; c: char; RckgabeWert: string): string; overload;
könnte ich beim aufruf die variable die das ergebnis enthalten soll mit übergeben, ca so:

Code:
s := Countwords('bla;bla2;bla3', ';', s);
Zitat:
Warum machen die unterschiedlichen Rückgabewerte Sinn?
weil ich dann in meinen proceduren etc nicht soviel mit inttostr und strtoint arbeiten muss.




hi² ^^

Zitat:
Mach doch kurzerhand eine Prozedur draus !
habe ich auch schon dran gedacht, werd ich wohl machen
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Hilfe beim Überladen einer Funktion

  Alt 5. Dez 2003, 11:47
Zitat von Pseudemys Nelsoni:
Zitat:
Warum machen die unterschiedlichen Rückgabewerte Sinn?
weil ich dann in meinen proceduren etc nicht soviel mit inttostr und strtoint arbeiten muss.
Wenn Du Ausgaberoutinen schreibst, die Strings erwarten, aber häufig Zahlen ausgeben sollen, macht es Sinn, dort einmalig die entsprechende Anpassung durchzuführen, anstatt bei jeder neuen Informationsquelle (CountWords, CountChars, CountBits, ...)
Delphi-Quellcode:
procedure OutputMessage(const AMessage: string);overload;
procedure OutputMessage(const AnInt: Integer);overload;
// etc...
Sieh Dir vielleicht einmal in der OH die Funktion Format an und ziehe in Erwägung, ob Du Deine Ausgaberoutine nicht um eine überladene Version mit
procedure OutputMessage(const AMessage: string; const AParams: array of const);overload; erweiterst...
gruß, choose
  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 15:59 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