Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Seltsames Linker/Compilerverhalten (https://www.delphipraxis.net/21604-seltsames-linker-compilerverhalten.html)

faux 5. Mai 2004 14:33


Seltsames Linker/Compilerverhalten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

ich hab grad eine Unit geschrieben, nur kommt immer die Meldung "Funktion braucht einen Ergebnistyp", obwohl ich ganz sicher bei jeder Funktion einen habe.
Außerdem wird der fehler in einer Zeile angezegt, wo es keine Funktion gibt:

Delphi-Quellcode:
unit EasyRegistry;

interface                                                             //Hier tritt der Fehler auf

uses
  Windows, Registry;
weiß einer was man da machen kann?
Ich hab auch schon probiert den QT in eine neue Unit zu kopieren, aber mit wenig Erfolg.

BluesKid 5. Mai 2004 14:41

Re: Seltsames Linker/Compilerverhalten
 
Moin moin

änder doch mal

Delphi-Quellcode:
function RegToStr(path, name: string); RootKey: HKEY): string; overload;
in

Delphi-Quellcode:
function RegToStr(path, name: string; RootKey: HKEY): string; overload;
^^Die schließende Klammer wegmachen...

schönen Gruß

Sam

glkgereon 5. Mai 2004 14:51

Re: Seltsames Linker/Compilerverhalten
 
kurze zwischenfrage (ich geh davoin aus, das das duie lösung war):

was heisst dieses "overload" dahinter
oder auch ich glaub "digital"

BluesKid 5. Mai 2004 14:52

Re: Seltsames Linker/Compilerverhalten
 
Liste der Anhänge anzeigen (Anzahl: 1)
*zack* .. So hab auch mal die .Create anweisungen aus den try...finally Blöcken geholt.

[edit]

@glkbkk

siehe OH :

Zitat:


Prozeduren und Funktionen überladen

Sie können an eine überladene Routine Parameter übergeben, die vom Typ her nicht den in den Deklarationen der Routine festgelegten Parametern entsprechen, die aber zuweisungs-kompatibel mit den Parametern in mehr als einer Deklaration sind. Dies wird häufig dann der Fall, wenn eine Routine mit verschiedenen Integer oder Reel-Typen überladen wird. Zum Beispiel:

Delphi-Quellcode:
procedure Store(X: Longint); overload;

procedure Store(X: Shortint); overload;
Wenn dies ohne Mehrdeutigkeiten zu erzeugen, möglich ist, ruft der Compiler in diesen Fällen die Routine auf, deren Parameter den Typ mit der kleinsten Reichweite besitzen, die für die eigentlichen Parameter in dem Aufruf ausreichend ist. (Konstantenausdrücke mit Reell-Werten haben immer den Typ Extended.)

[/edit]

faux 5. Mai 2004 15:05

Re: Seltsames Linker/Compilerverhalten
 
@BluesKid:

Danke, das war! Jetzt funktionierts...

Nur was genau war der fehler?
Ich kann keinen unterschied finden (bis auf zwei schließende klammern im interface, welche aber das problem nicht vollständig beheben...)

BluesKid 5. Mai 2004 15:09

Re: Seltsames Linker/Compilerverhalten
 
Vorher:

Delphi-Quellcode:

  function RegToStr(path, name: string); //<-- hier hat die function keinen Ergebnistyp
  RootKey: HKEY): string; overload; //<-- und es ist fraglich ob dir der Compiler das
                                    // durchgehen lassen würde ;-)
nacher:

Delphi-Quellcode:

function RegToStr(path, name: string; RootKey: HKEY): string; overload;
                                // ^^^^  jetzt stimmt

faux 5. Mai 2004 15:14

Re: Seltsames Linker/Compilerverhalten
 
OK, danke...

glkgereon 7. Mai 2004 15:07

Re: Seltsames Linker/Compilerverhalten
 
ähm, einfach gesagt,
Delphi-Quellcode:
procedure machwas(a:integer); overload;
bewirkt, das bei einem solchen aufruf

Delphi-Quellcode:
machwas(a);//typ shortint
vor dem eigentlichen aufruf den short in nen int wandelt
richtig so?

Niko 7. Mai 2004 15:19

Re: Seltsames Linker/Compilerverhalten
 
Obwohl's eigentlich OT ist:
Mit overload kannst du mehrere Prozeduren mit dem selben Namen erstellen, die unterschiedliche Parameter entgegennehmen. Der Comiler ruft dann automatisch die Prozedur auf, zu der die übergebenen Parameter passen.

glkgereon 7. Mai 2004 17:55

Re: Seltsames Linker/Compilerverhalten
 
das heisst der kompiler passt nicht die typen an, sondern sucht die passende procedure aus...


und override?
error-code-unterdrückung?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 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-2025 by Thomas Breitkreuz