Tengo que unificar una serie de calculos en varias aplicaciones hechas n Delphi y VFP, la manera mas practica que se me ocurrio fue crear una dll y llamarla desde las distintas aplicaciones.
Tengo Esta DLL:
Código Delphi
[-]library ToolsProfit;
uses
SysUtils,
Classes,
Forms,
UtilidadGeneral in '..\..\Unidades\UtilidadGeneral.pas';
{$R *.res}
Procedure Informa(x : PChar); StdCall; Export;
begin
MessageBoxStr(x,'Tipo');
End;
Function StrMontoGringo(c:Currency):Pchar;
Var
m : String;
begin
m := Trim(fs(c,15,4));
m := StrReplace(m,'.',#0);
Result := Pchar(Trim(StrReplace(m,',','.')));
end;
Procedure DecodeAux02(Aux02:Pchar; Var Piezas,Largo,Altoouble; Var Ubicacion:Pchar);
Var
s : ShortString;
Aux : String;
begin
Aux := StrReplace(aux02,'.',',');
Piezas := 0;
Largo := 0;
Alto := 0;
Ubicacion := '';
s := ExtraerSTRDelimitada(Aux,';');
If s <> '' Then
Piezas := StrToCurr(s);
s := ExtraerSTRDelimitada(Aux,';');
If s <> '' Then
Largo := StrToCurr(s);
s := ExtraerSTRDelimitada(Aux,';');
If s <> '' Then
Alto := StrToCurr(s);
Ubicacion := AnsiStrUpper(Pchar(Aux));
end;
Function EncodeAux02(Piezas,Largo,Altoouble; Ubicacion:Pchar):Pchar;
Begin
Result := PChar(Trim(StrMontoGringo(Piezas)+';'+
StrMontoGringo(Largo)+';'+
StrMontoGringo(Alto)+';'+
AnsiStrUpper(Ubicacion)));
End;
Function StockEnFactores(Piezas,Largo,Altoouble)ouble;
Const
Factor = 10000;
begin
Result := Trunc(Piezas*Largo*Alto*Factor)/Factor;
End;
Function StockEnAux02(Aux02:PChar)ouble;
Var
Piezas,Largo,Altoouble;
Ubicacion:PChar;
begin
DecodeAux02(Aux02,Piezas,Largo,Alto,Ubicacion);
Result := StockEnFactores(Piezas,Largo,Alto);
End;
Exports
DecodeAux02,
EncodeAux02,
StockEnFactores,
StockEnAux02,
Informa;
begin
end.
y en VFP la declaro:
Código:
DECLARE SINGLE DecodeAux02 IN 'P:\Profit_a\reporadi\ToolsProfit';
String, Double, Double, Double, String
DECLARE Informa IN 'P:\Profit_a\reporadi\ToolsProfit';
String
El problema es con los datos tipo STRING vs PCHAR Al llamar las rutinas desde VFP (estoy probando con Procedure Informa(x : PChar); StdCall; Export
que debería mostrar un mensaje con el texto del parametro me genera un error:
Data type mistmach - Es un problema de tipos
si cambio la variable por un texto constante ('xxxxx') si me muestra el mensaje.
1.- Que tipo de datos puedo usar para recibir un String desde VFP como parametro?
probe: ShortString,String (con shareMem) y pChar y todosdan mas o menos lo mismo