Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-03-2013
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 192
Poder: 13
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
  #2  
Antiguo 13-03-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.405
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, recuerda poner títulos descriptivos a tus preguntas, gracias.
¡A!, y ese código no es php, ¿no?
Responder Con Cita
  #3  
Antiguo 13-03-2013
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 937
Poder: 24
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Te sugiero lo siguiente:

Codigo Libreria (DLL)
Código Delphi [-]
library CalendarioLib;

...
{$R *.res}

function Seleccionar_Fecha(sTitulo: pChar; dia, mes, ano: word): pChar;stdcall;
var
{  FechaStr   : string; 
  Fechain    : TDateTime;
}
  Resultado  : pChar;
  Form_Fecha : TForm_Fecha;
begin
     with TForm_Fecha.Create(nil) Do
     begin
           Caption:=sTitulo;
           MonthCalendar1.Date := EncodeDate(ano,mes,dia);
           try
              Result:=PChar('');
              ShowModal;
              if ModalResult=mrOk then
                 Result:=PChar(StringReplace(DateToStr(MonthCalendar1.Date), ' ','',[rfReplaceAll]));

           finally
                  Free;
           end;
     end;

end;

exports
     Seleccionar_Fecha;

begin
end.

Para llamar a función:
Código Delphi [-]
...
  function Seleccionar_Fecha(sTitulo: pChar; dia, mes, ano: word): pChar;stdcall; external 'CalendarioLib.Dll';

var
  Form_Fecha: Tform_Fecha;

implementation

{$R *.dfm}

procedure Tform_Fecha.Button1Click(Sender: TObject);
var
   dia, mes, ano: word;
   sDate, sTitulo:PChar;
begin
     dia:=15; mes:=6; ano:=2013;

     sTitulo:=PChar('Calendario Cumpleaños');

     sDate:=Seleccionar_Fecha(sTitulo,dia, mes, ano);

     Edit1.Text:=StrPas(sDate);

end;

Saludos cordiales
Responder Con Cita
  #4  
Antiguo 13-03-2013
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 192
Poder: 13
elcharlie Va por buen camino
Muchas gracias por Responder, lo pruebo y te digo.

Última edición por Casimiro Notevi fecha: 13-03-2013 a las 16:51:56.
Responder Con Cita
  #5  
Antiguo 13-03-2013
Avatar de elcharlie
elcharlie elcharlie is offline
Miembro
 
Registrado: mar 2013
Ubicación: Bilbao
Posts: 192
Poder: 13
elcharlie Va por buen camino
Vale ya esta probado.
Si uso strpas(retorno) me funciona perfectamente. He estado mirando por internet, y todavia no me queda muy claro que es lo que hace, pero lo que me importa es que me funciona. Muchisimas gracias por tu ayuda, de verdad que ya empezaba a desesperarme.
Un saludo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
de un principiante dtomeysoto MySQL 1 02-04-2008 16:11:42
Problema de principiante fox Lazarus, FreePascal, Kylix, etc. 3 11-12-2007 15:47:46
Principiante krloz99 Varios 3 08-06-2007 15:59:30
principiante olybola Conexión con bases de datos 3 17-05-2004 19:56:36
Principiante fjcg02 Internet 3 10-03-2004 20:54:50


La franja horaria es GMT +2. Ahora son las 21:57:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi