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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 29-12-2009
Avatar de Lord Delfos
Lord Delfos Lord Delfos is offline
Miembro
 
Registrado: ene 2008
Ubicación: Tandil, Argentina
Posts: 558
Poder: 17
Lord Delfos Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
... cnWizard permite modificar cualquier archivo del proyecto delphi que tengas, de forma que esa constante se podría incluir en una unidad tuya, o incluso que cree un nuevo .pas con la constante y agregue esa unidad al proyecto automáticamente.
Es muy interesante tu idea, pero tengo una duda.

¿Hay alguna manera de saber, desde un script, cómo se llama el proyecto o su ruta? Es decir, yo puedo agregar lineas de código al archivo que tengo editando, pero ¿qué pasa si quiero que escriba en otro archivo del proyecto? Tendría que hacer un script por cada proyecto, para poder cambiarle el archivo en el que tiene que escribir...

Es decir, sería muy bueno poder saber el nombre del proyecto (y/o su ruta) así uno podría crear una unidad en la misma ruta del proyecto y agregarla a la uses... ¿Se entiende lo que digo?
Responder Con Cita
  #22  
Antiguo 29-12-2009
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Casimiro, los scripts los escribes si quieres en el mismo delphi (como si fuera un .pas independiente con el siguiente esquema y uses. Verás que los uses no son los standard de delphi, sino aquellos .pas situados en la carpeta de CnWizards:
- PSDecl: clases y rutinas que se pueden usar en los scripts
- PSDeclEx: rutinas que interactuan con el IDE. Todo lo que puedes hacer con el ratón en el IDE, puede hacerse con cnScripts.
(Pascal Script Declaration)

Lord Delfos: Por supuesto.
Código Delphi [-]
program Uno;
uses cnWizUtils, // para averigual el projecto
       ToolsApi,  // unidad con los tipos de datos


var Project: IOTAProject; // mira en cnWizards\PSDecl\ToolsApi.pas este tipo de datos,métodos, etc.

i:integer;

begin

writeln('Nombre del proyecto ' + CnOtaGetCurrentProjectName);
writeln('Fichero de proyecto ' + CnOtaGetCurrentProjectFileName);
writeln('Archivos en el proyecto:');
Project := CnOtaGetCurrentProject;
  for i := 0 to Project.GetModuleCount - 1 do
    writeln('  ' + Project.GetModule(i).GetFileName );
end;

end.

Os sugiero mirar la carpeta de cnWidzards\PSdemos (Pascal Script Demos)

Un pequeño manual y mis propios scripts aqui: http://www.terawiki.clubdelphi.com/a...20tutorial.zip

Edito: Se me olvidaba, todo el contenido del zip descomprimirlo en la carpeta c:\archivos de programa\cnwizards\User\Scripts (scripts la teneis que crear vosotros).

Edit2: Para importar los cnscripts, abres el Script Library, y usas el cuarto botón por la izquierda (Import) eligiendo el archivo .xml de la carpeta User\Scripts, Importará sólo algunos scripts, el resto los tendréis que añadir a mano (lo siento, ayer era tarde y estaba algo cansado).

Como ya dije en el manual, todos los errores de compilación de los cnScripts y writeln que hagamos en ellos saldrán en el Script Window. Yo hago los scripts con Notepad++ ya que el IDE de delphi se quedará trabado en los uses y no puede compilar (se puede configurar el IDE para que busque en $(cnwizards)\PSDecl aunque yo no lo tengo configurado)

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 30-12-2009 a las 09:08:42.
Responder Con Cita
  #23  
Antiguo 31-12-2009
Avatar de Lord Delfos
Lord Delfos Lord Delfos is offline
Miembro
 
Registrado: ene 2008
Ubicación: Tandil, Argentina
Posts: 558
Poder: 17
Lord Delfos Va por buen camino
¡Ajá!

¡Lepe, son como el Papa Noel de CnWizards! ¿Para reyes, no me traes una bicicleta, viejo?

Mil gracias.
Responder Con Cita
  #24  
Antiguo 01-01-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lepe, al ver tu tutorial he recordado que eso "ya lo había visto antes" y efectivamente, buscando, buscando... lo encontré en mi directorio "ParaEstudiarlo" :s
Responder Con Cita
  #25  
Antiguo 27-12-2014
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Wink

Buenas, buscando y buscando me topé con este post. Resulta que para mi trabajo necesito saber la fecha de compilación del ejecutable. Build que le dicen.
Aquí ví una variada gama de cosas así que me puse a probar, indagué un poco mas y me encontré con esto.

La fecha/hora de compilación está en el espacio de memoria "LastCompiledTime", que no aparece en el ejemplo, así que yo lo agregué en mi código...
Código Delphi [-]
procedure TfrmGetDateVersion.btnDetailsFileClick(Sender: TObject);
type
  TEXEVersionData = record
    CompanyName,
    FileDescription,
    FileVersion,
    InternalName,
    LegalCopyright,
    LegalTrademarks,
    OriginalFileName,
    ProductName,
    ProductVersion,
    Comments,
    PrivateBuild,
    SpecialBuild,
    LastCompiledTime:string;
  end;

var
  vData:TEXEVersionData;

  function GetEXEVersionData(const FileName: string): TEXEVersionData;
  type
    PLandCodepage = ^TLandCodepage;
    TLandCodepage = record
      wLanguage,
      wCodePage: word;
    end;
  var
    dummy,
    len: cardinal;
    buf, pntr: pointer;
    lang: string;
  begin
    len := GetFileVersionInfoSize(PChar(FileName), dummy);
    if len = 0 then
      RaiseLastOSError;
    GetMem(buf, len);
    try
      if not GetFileVersionInfo(PChar(FileName), 0, len, buf) then
        RaiseLastOSError;

      if not VerQueryValue(buf, '\VarFileInfo\Translation\', pntr, len) then
        RaiseLastOSError;

      lang := Format('%.4x%.4x', [PLandCodepage(pntr)^.wLanguage, PLandCodepage(pntr)^.wCodePage]);

      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\CompanyName'), pntr, len){ and (@len <> nil)} then
        result.CompanyName := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\FileDescription'), pntr, len){ and (@len <> nil)} then
        result.FileDescription := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\FileVersion'), pntr, len){ and (@len <> nil)} then
        result.FileVersion := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\InternalName'), pntr, len){ and (@len <> nil)} then
        result.InternalName := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\LegalCopyright'), pntr, len){ and (@len <> nil)} then
        result.LegalCopyright := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\LegalTrademarks'), pntr, len){ and (@len <> nil)} then
        result.LegalTrademarks := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\OriginalFileName'), pntr, len){ and (@len <> nil)} then
        result.OriginalFileName := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\ProductName'), pntr, len){ and (@len <> nil)} then
        result.ProductName := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\ProductVersion'), pntr, len){ and (@len <> nil)} then
        result.ProductVersion := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\Comments'), pntr, len){ and (@len <> nil)} then
        result.Comments := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\PrivateBuild'), pntr, len){ and (@len <> nil)} then
        result.PrivateBuild := PChar(pntr);
//Esto lo agregué yo
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\LastCompiledTime'), pntr, len){ and (@len <> nil)} then
        result.LastCompiledTime := PChar(pntr);

      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\SpecialBuild'), pntr, len){ and (@len <> nil)} then
        result.SpecialBuild := PChar(pntr);

    finally
      FreeMem(buf);
    end;
  end;
begin
  if dlg1.Execute() then
  begin
    vData:=GetEXEVersionData(dlg1.FileName);
    mmo2.Lines.Text:='1';
  end ;
end;

Con esto podemos saber la fecha de última compilación. Sigo haciendo pruebas pero me parece que es el camino.

La cosa me devuelve un string con un campo que tiene la fecha y la hora, queda pasar eso a TimeStamp para completar la secuencia.

Espero haber ayudado.

Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #26  
Antiguo 27-12-2014
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Thumbs up

Me parece que "LastCompiledTime" está disponible desde Delphi 7 en adelante. Probé con un compilado con mi viejo D6 y ese campo aparece vacío.

Hay que tener cuidado, en este caso, al transformar la fecha/hora.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
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
insertar fecha con ado y Tquery microbiano Conexión con bases de datos 5 12-11-2009 19:26:01
obtener solo la fecha en formato fecha y sin hora BlueSteel SQL 14 09-05-2008 16:42:19
Problema insertar fecha Nomad SQL 17 17-01-2008 22:50:46
Insertar fecha desde NxDatePicker JcTaztoman Varios 0 26-09-2007 18:30:18
Como insertar fecha en un proyecto Adonis Varios 2 18-09-2007 03:52:02


La franja horaria es GMT +2. Ahora son las 19:42:14.


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