 
             Delphi-Quelltext
                        Delphi-Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 
 | typeMSVC_AVS_Value = Int64;
 
 AVS_Value = record
 vtype: WideChar;
 array_size: Smallint;
 case Char of
 'c': (vclip: Pointer);
 'b': (vboolean: LongBool);
 'i': (vinteger: Integer);
 'f': (vfloating_pt: Single);
 's': (vstring: PChar);
 'a': (varray: PAVS_Value_array);
 end;
 
 
 ext_avs_invoke: function(env: PAVS_ScriptEnvironment; name: PAnsiChar; args: MSVC_AVS_Value; arg_names: PPAnsiChar): MSVC_AVS_Value; stdcall;
 ext_avs_release_value: procedure(v: MSVC_AVS_Value); stdcall;
 
 function avs_invoke(env: PAVS_ScriptEnvironment; name: PAnsiChar; args: AVS_Value; arg_names: PPAnsiChar = nil): AVS_Value;
 begin
 Result := AVS_Value(ext_avs_invoke(env, name, MSVC_AVS_Value(args), arg_names))
 end;
 
 procedure avs_release_value(v: AVS_Value);
 begin
 ext_avs_release_value(MSVC_AVS_Value(v));
 end;
 | 
		
	  
Hallo,
seit Tagen versuche ich die function und procedure auf 64bit umzustellen, bisher leider ohne Erfolg.
Unter 32bit gibt es keine Probleme aber bei 64bit erhalte ich entweder "ungültige Typenumwandlung" oder eine nicht lauffähige Compelierung.
Versucht habe ich (auch unter 32bit):
		                     
             Delphi-Quelltext
                        Delphi-Quelltext                    
           	 										| 1:2:
 
 |   ext_avs_release_value(MSVC_AVS_Value(@v))  ext_avs_release_value(MSVC_AVS_Value(Pointer(v)^))
 | 
		
	  
Ergebnis: keine Compiler Fehler aber ein nicht lauffähiges Programm
auch:
		                     
             Delphi-Quelltext
                        Delphi-Quelltext                    
           	 										| 1:
 |    Result := AVS_Value(Pointer(ext_avs_invoke(env, name, MSVC_AVS_Value(@args), arg_names))^)					 | 
		
	  
ergibt eine nicht lauffähige Compelierung, Pointer^ und Addr @ sind schuld.
Ich bin mir auch nicht sicher ob "ext_avs_invoke" einen PInt64 Adresse zurückgibt, es handelt sich um die Avisynth.dll die ich gerne in der 64bit Version nutzen möchte.
Wie behandle ich unter 64bit eine Adresse auf einen Record der aus einer DLL kommt? wie wandle ich ein Int64 zu einem Record?
Danke!