Ver Mensaje Individual
  #1  
Antiguo 13-03-2013
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 193
Reputación: 14
elcharlie Va por buen camino
Problema de Principiante

Hola!
Abro este hilo, para ver si alguna alma caritativa me puede echar una mano. Soy novato en esto de programar en Delphi, aunque he usado otros lenguajes, y a primera vista me resulta interesante.
El problema en cuestion, es que, estoy haciendo una dll, para usar en otro lenguaje. Todo me iba bastante bien, hasta que he metido una funcion que devuelve en pchar una fecha seleccionada en un MonthCalendar.
Aparentemente funciona bien, pero la primera vez que se llama a la función no me devuleve toda la fecha y me la trunca con el ascci 24(Cancelar), me Explico; si tiene que devolver 13/03/2013, me devuelve 13/03/20(Ascci(24) que es la flecha arriba). Os dejo el codigo para que me digais, lo raro es que solo me pasa la primera vez que llamo la funcion, luego va bien.
Gracias de antemano.
Codigo dll:
Código PHP:
function Seleccionar_Fecha(sTitulopChardiapCharmespCharanopChar): pChar;stdcall;
var
  
fechaStr string;
  
fechain TDateTime;
  
resultado pChar;
begin
   fechaStr
:=dia+'/'+mes+'/'+ano;
   
fechain := StrToDate(fechaStr);
   
Form_Fecha :=nil;
   
Form_Fecha := TForm_Fecha.Create(nil);
   if 
Form_Fecha <> nil then
   with Form_Fecha 
do
       
begin
       Form_Fecha
.Caption:=sTitulo;
        
Form_Fecha.Aceptar:=FALSE;
         
Form_Fecha.MonthCalendar1.Date := fechain;
          try
              
Form_Fecha.ShowModal;
                if 
Form_Fecha.Aceptar TRUE then
                 begin
                    result
:=PChar(StringReplace(DateToStr(Form_Fecha.MonthCalendar1.Date), ' ','',[rfReplaceAll]));
                  
end
                
else
                  
begin
                    result
:=PChar('');
                  
end;
              
finally
                Form_Fecha
.Free;
              
end;
          
end;
        
end
end

y este del formulario que usa:

Código PHP:
unit SeleccionarFecha;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsComCtrlsStdCtrls;

type
  TForm_Fecha 
= class(TForm)
    
MonthCalendar1TMonthCalendar;
    
Button1TButton;
    
Button2TButton;
    
procedure FormClose(SenderTObject; var ActionTCloseAction);
    
procedure Button1Click(SenderTObject);
    
procedure Button2Click(SenderTObject);
    
procedure MonthCalendar1DblClick(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
    
Aceptar boolean ;
    
//FechaString : String;
    //Fecha : TDate;
  
end;

var
  
Form_FechaTForm_Fecha;
implementation


{$R *.dfm}





procedure TForm_Fecha.FormClose(SenderTObject; var ActionTCloseAction);
begin
   Action 
:= caFree;
end;
procedure TForm_Fecha.Button1Click(SenderTObject);
begin
  Aceptar 
:= FALSE;
  
Form_Fecha.Close;
end;

procedure TForm_Fecha.Button2Click(SenderTObject);
begin
  Aceptar 
:= TRUE;
  
Form_Fecha.Close;
end;



procedure TForm_Fecha.MonthCalendar1DblClick(SenderTObject);
begin
  Aceptar 
:= TRUE;
  
Form_Fecha.Close;
end;

end
Responder Con Cita