FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
error overload
Hola a todos, de nuevo vengo a molestarlos, aun sigo migrando proyectos de Delphi 2010 a XE, el problema que tengo ahora es que tengo el siguiente código:
y me esta dando estos errores: [dcc32 Error] GraphicUtils.pas(229): E2254 Overloaded procedure 'FillDWord’ must be marked with the 'overload’ directive [dcc32 Error] GraphicUtils.pas(58): E2065 Unsatisfied forward or external declaration: 'FillDWord’ El primer error desaparece cuando marco los dos como overload (así como esta en el código que puse) y es cuando aparece el segundo error, lo logro quitar si comento la declaración, pero ahí esta otro problema por que también los usan externamente. Alguien sabe que podría hacer para solucionar esto? |
#2
|
|||
|
|||
Que intentas hacer? Seguro que hay mejores alternativas.
|
#3
|
||||
|
||||
Ambos métodos tienen el mismo nombre, la misma cantidad de parámetros y además los parámetros de ambos métodos son del mismo tipo. El compilador no encuentra diferencia alguna en sus encabezados y por ende muestra el error.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#4
|
||||
|
||||
Pregunta: Tenes 1 metodo o 2 metodos?
Si es 1 metodo, por que incluir la directiva overload? Si son 2 metodos, la respuesta de jhonny es correcta: No podes tener dos metodos que se llamen igual y tengan la misma firma, incluso con la directiva overload |
#5
|
|||
|
|||
Una disculpa por tardar en contestar, eh tenido algo de trabajo, se soluciono el problema, todo era por que estaba usando Integer, cuando lo cambie por NativeInt todo se soluciono.
|
#6
|
|||
|
|||
Ok, ahora se me presento otro problemita, tengo en un classes.pas estas funciones:
Y en fs_uses.pas tengo lo siguiente:
Me esta dando el siguiente error: [dcc32 Error] fs_iclassesrtti.pas(306): E2251 Ambiguous overloaded call to 'Seek' System.Classes.pas(846): Related method: function TStream.Seek(const Int64; Word): Int64; System.Classes.pas(845): Related method: function TStream.Seek(const Int64; TSeekOrigin): Int64; Alguien sabe como poder solucionarlo? Gracias Por cierto Caller.Params son Variant. (Uso XE5) |
#7
|
||||
|
||||
El compilador no sabe a que metodo se supone que debe invocar. Variant puede ser cualquier tipo (esa es su ventaja) entre sus contras es que hay que andar haciendo conversiones, chequeos de tipo, consumen mas memoria y son mas lentos.
Imaginate este caso:
La solucion: explicitamente indicar el tipo, por ejemplo usando http://docwiki.embarcadero.com/Libraries/en/System.Variants.VarToStr
|
#8
|
|||
|
|||
Gracias por tu pronta respuesta AgustinOrtu.
Me sirvio tu ejemplo para darme una idea de que hacer, así que ya lo solucione, lo que hice fue hacer comparaciones delos valores que obtenía el variant y dependiendo de eso los mandaba al método correspondiente:
Gracias por toda su ayuda |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
OverLoad con parametro Nil | Neeruu | Varios | 9 | 03-11-2011 20:26:19 |
stdcall? overload? | hmv | OOP | 4 | 30-10-2006 22:14:28 |
problema con overload | santiago14 | Varios | 1 | 03-03-2005 15:35:00 |
Error "there is no overload version" | torito | Varios | 4 | 21-11-2003 21:54:00 |
Aclaracion de overload | tica | Varios | 3 | 06-11-2003 17:09:59 |
|