Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-09-2013
agustibaldo agustibaldo is offline
Miembro
 
Registrado: nov 2006
Posts: 105
Poder: 20
agustibaldo Va por buen camino
egostar, gracias por tu respuesta.
Probé como indicaste y, si bien cambió el formato del mensaje, sigue arrojando caracteres extraños.
Saludos.

Código:
'ÿ%`'#$11'¯w'#$0090#$0090#$0090#$0090#$0090'ÿ%Ø'#$10'¯w'#$0090#$0090#$0090#$0090#$0090'‹ÿU‹ì‹E'#$C'‹M'#8'j'
Responder Con Cita
  #2  
Antiguo 26-09-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
agustibaldo,

Cita:
Empezado por agustibaldo
...Caracteres extraños al ejecutar función <GetFileVersionInfo>...
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TFileVersion = Record
    CompanyName : String;
    FileDescription : String;
    FileVersion : String;
    InternalName : String;
    LegalCopyright : String;
    LegalTrademarks : String;
    OriginalFileName : String;
    ProductName : String;
    ProductVersion : String;
    Comments : String;
    PrivateBuild : String;
    SpecialBuild : String;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function GetFileInfo(const FileName: String): TFileVersion;
type
   PLandCodepage = ^TLandCodepage;
   TLandCodepage = Record
      Language : Word;
      CodePage : Word;
   end;

var
   Dummy,
   LenBuffer: Cardinal;
   Buffer, lpBuffer: Pointer;
   Language: String;

begin

   LenBuffer := GetFileVersionInfoSize(PChar(FileName), Dummy);

   if LenBuffer = 0 then
      RaiseLastOSError;

   GetMem(Buffer, LenBuffer);

   try

      if not GetFileVersionInfo(PChar(FileName), 0, LenBuffer, Buffer) then
         RaiseLastOSError;

      if not VerQueryValue(Buffer, '\VarFileInfo\Translation\', lpBuffer, LenBuffer) then
         RaiseLastOSError;

      Language := Format('%.4x%.4x', [PLandCodepage(lpBuffer)^.Language, PLandCodepage(lpBuffer)^.CodePage]);

      if VerQueryValue(Buffer, PChar('\StringFileInfo\' + Language + '\CompanyName'), lpBuffer, LenBuffer) then
         Result.CompanyName := PChar(lpBuffer);

      if VerQueryValue(Buffer, PChar('\StringFileInfo\' + Language + '\FileDescription'), lpBuffer, LenBuffer) then
         Result.FileDescription := PChar(lpBuffer);

      if VerQueryValue(Buffer, PChar('\StringFileInfo\' + Language + '\FileVersion'), lpBuffer, LenBuffer) then
         Result.FileVersion := PChar(lpBuffer);

      if VerQueryValue(Buffer, PChar('\StringFileInfo\' + Language + '\InternalName'), lpBuffer, LenBuffer) then
         Result.InternalName := PChar(lpBuffer);

      if VerQueryValue(Buffer, PChar('\StringFileInfo\' + Language + '\LegalCopyright'), lpBuffer, LenBuffer) then
         Result.LegalCopyright := PChar(lpBuffer);

      if VerQueryValue(Buffer, PChar('\StringFileInfo\' + Language + '\LegalTrademarks'), lpBuffer, LenBuffer) then
         Result.LegalTrademarks := PChar(lpBuffer);

      if VerQueryValue(Buffer, PChar('\StringFileInfo\' + Language + '\OriginalFileName'), lpBuffer, LenBuffer) then
         Result.OriginalFileName := PChar(lpBuffer);

      if VerQueryValue(Buffer, PChar('\StringFileInfo\' + Language + '\ProductName'), lpBuffer, LenBuffer) then
         Result.ProductName := PChar(lpBuffer);

      if VerQueryValue(Buffer, PChar('\StringFileInfo\' + Language + '\ProductVersion'), lpBuffer, LenBuffer) then
         Result.ProductVersion := PChar(lpBuffer);

      if VerQueryValue(Buffer, PChar('\StringFileInfo\' + Language + '\Comments'), lpBuffer, LenBuffer) then
         Result.Comments := PChar(lpBuffer);

      if VerQueryValue(Buffer, PChar('\StringFileInfo\' + Language + '\PrivateBuild'), lpBuffer, LenBuffer) then
         Result.PrivateBuild := PChar(lpBuffer);

      if VerQueryValue(Buffer, PChar('\StringFileInfo\' + Language + '\SpecialBuild'), lpBuffer, LenBuffer) then
         Result.SpecialBuild := PChar(lpBuffer);

   finally

      FreeMem(Buffer);

   end;

end;

function GetFileDescription(const FileName: String): String;
type
   PLandCodepage = ^TLandCodepage;
   TLandCodepage = Record
      Language : Word;
      CodePage : Word;
   end;

var
   Dummy,
   LenBuffer: Cardinal;
   Buffer, lpBuffer: Pointer;
   Language: String;

begin

   LenBuffer := GetFileVersionInfoSize(PChar(FileName), Dummy);

   if LenBuffer = 0 then
      Exit;

   GetMem(Buffer, LenBuffer);

   try

      GetFileVersionInfo(PChar(FileName), 0, LenBuffer, Buffer);

      VerQueryValue(Buffer, '\VarFileInfo\Translation\', lpBuffer, LenBuffer);

      Language := Format('%.4x%.4x', [PLandCodepage(lpBuffer)^.Language, PLandCodepage(lpBuffer)^.CodePage]);

      if VerQueryValue(Buffer, PChar('\StringFileInfo\' + Language + '\FileDescription'), lpBuffer, LenBuffer) then
         Result := PChar(lpBuffer);

   finally

      FreeMem(Buffer);

   end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
   FileVersion : TFileVersion;

begin

   FileVersion := GetFileInfo(Application.ExeName);

   ListBox1.Clear;

   if FileVersion.CompanyName <> EmptyStr then
      ListBox1.Items.Add('CompanyName: ' + FileVersion.CompanyName);

   if FileVersion.FileDescription <> EmptyStr then
      ListBox1.Items.Add('FileDescription: ' + FileVersion.FileDescription);

   if FileVersion.FileVersion <> EmptyStr then
      ListBox1.Items.Add('FileVersion: ' + FileVersion.FileVersion);

   if FileVersion.InternalName <> EmptyStr then
      ListBox1.Items.Add('InternalName: ' + FileVersion.InternalName);

   if FileVersion.LegalCopyright <> EmptyStr then
      ListBox1.Items.Add('LegalCopyright: ' + FileVersion.LegalCopyright);

   if FileVersion.LegalTrademarks <> EmptyStr then
      ListBox1.Items.Add('LegalTrademarks: ' + FileVersion.LegalTrademarks);

   if FileVersion.OriginalFileName <> EmptyStr then
      ListBox1.Items.Add('OriginalFileName: ' + FileVersion.OriginalFileName);

   if FileVersion.ProductName <> EmptyStr then
      ListBox1.Items.Add('ProductName: ' + FileVersion.ProductName);

   if FileVersion.ProductVersion <> EmptyStr then
      ListBox1.Items.Add('ProductVersion: ' + FileVersion.ProductVersion);

   if FileVersion.Comments <> EmptyStr then
      ListBox1.Items.Add('Comments: ' + FileVersion.Comments);

   if FileVersion.PrivateBuild <> EmptyStr then
      ListBox1.Items.Add('PrivateBuild: ' + FileVersion.PrivateBuild);

   if FileVersion.SpecialBuild <> EmptyStr then
      ListBox1.Items.Add('SpecialBuild: ' + FileVersion.SpecialBuild);

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   ShowMessage(GetFileDescription(Application.ExeName));
end;

end.
El código anterior en Delphi 7 y Delphi 2010 sobre Windows 7 Professional x32, muestra la información asociada al ejecutable de la aplicación por medio de las APIs GetFileVersionInfoSize, GetFileVersionInfo y VerQueryValue.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 26-09-2013 a las 01:13:46.
Responder Con Cita
  #3  
Antiguo 26-09-2013
agustibaldo agustibaldo is offline
Miembro
 
Registrado: nov 2006
Posts: 105
Poder: 20
agustibaldo Va por buen camino
nlsgarcia, muchas gracias por tu respuesta.
Lamentablemente sigo "atascado en el medio".
Implemente la rutina que me pasaste pero no muestra ningún texto de salida. Es decir, devuelve vacío.
Conversando con mi compañeros de oficina que compilan el mismo código pero en sus PC, ellos no tienen problemas.
Podría ser que exista algún problema con las fuentes en mi PC o con algún seteo de Delphi que pueda estar molestando?
Nuevamente gracias a todos por sus respuestas.
Saludos.
Responder Con Cita
  #4  
Antiguo 26-09-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
agustibaldo,

Cita:
Empezado por agustibaldo
...Implemente la rutina que me pasaste pero no muestra ningún texto de salida...

...mi compañeros de oficina que compilan el mismo código pero en sus PC, ellos no tienen problemas...
Pregunto:

1- ¿Que versión de Delphi utilizan en la oficina?.

2- ¿Que versión de Windows utilizan en la oficina?.

3- ¿Por el mismo código te refieres al del Msg #6?.

4- ¿La aplicación en cuestión en tu PC tiene habilitado la opción: Proyect -> Options -> Version Info -> Include version information in project?.

5- ¿Si utilizas el código del Msg #6 en tu PC con esta ruta 'C:\Windows\System32\kernel32.dll', funciona?.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 26-09-2013 a las 17:05:19.
Responder Con Cita
  #5  
Antiguo 26-09-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
agustibaldo,

Cita:
Empezado por agustibaldo
...¿Podría ser que exista algún problema con las fuentes en mi PC o con algún seteo de Delphi que pueda estar molestando?...
Continuación del Msg #8:

Te comento: Probé el código del Msg #6 (Delphi 7 y Delphi 2010), en Windows XP Professional x32, Windows 7 Professional x32, Windows 7 Professional x64 (Todos en Ingles) y Windows Vista Home Premium x32 (En Español) y en todos los casos funciono correctamente.

Espero sea útil

Nelson.
Responder Con Cita
  #6  
Antiguo 26-09-2013
agustibaldo agustibaldo is offline
Miembro
 
Registrado: nov 2006
Posts: 105
Poder: 20
agustibaldo Va por buen camino
Cita:
1- ¿Que versión de Delphi utilizan en la oficina?.

2- ¿Que versión de Windows utilizan en la oficina?.

3- ¿Por el mismo código te refieres al del Msg #6?.

4- ¿La aplicación en cuestión en tu PC tiene habilitado la opción: Proyect -> Options -> Version Info -> Include version information in project?.

5- ¿Si utilizas el código del Msg #6 en tu PC con esta ruta 'C:\Windows\System32\kernel32.dll', funciona?.
nlsgarcia, he podido solucionar el problema!!!
Primero, respondo tus consultas:

1- Delphi 2010 y estamos migrando a XE3.

2- Windows 7.

3- Por mismo código me refiero a que, esta función con "problemas", se ejecuta en librerías compartidas por todos.

4- Si, esta habilitada la opción Include version information in project?


Te comento como solucioné el inconveniente.
Cuando revise la opción que planteas en la pregunta 4, me dí cuenta que el Language estaba seteado a Ingles (Estados Unidos). Probé setearlo a Español (Argentina) y luego probé compilarlo nuevamente. Aparecía nuevamente el mismo problema.
Entonces, volví al mismo cuadro de diálogos y bajo la opción de Language estaba la lista con las opciones que describías en tu función. Procedí a completar la Key FileDescription y volví a probar nuevamente. Ahora todo funcionó de 10!

Ahora bien:
1º) el tema esta solucionado.

2º) me sigue llamando la atención que este problema se manifiesta solo con mi PC, no así en el resto de mis compañeros. En nuestro grupo de trabajo, podemos compilar los proyectos de todos, por lo que estas opciones deberían estar seteadas en todos los proyectos cuando esto no ocurre en todos los casos.
Igualmente sigo investigando y cualquier cosa les comento.
Muchas gracias a todos por sus comentarios y respuestas.
Saludos.
Responder Con Cita
  #7  
Antiguo 26-09-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
agustibaldo,

Cita:
Empezado por agustibaldo
...¿Podrías explicarme que es el Msg #6?...
Todos los mensajes de un hilo están numerados, el Msg #6 es el sexto mensaje de este hilo y su código asociado.

Cita:
Empezado por agustibaldo
...bajo la opción de Language estaba la lista con las opciones que describías en tu función (Msg #6). Procedí a completar la Key FileDescription y volví a probar nuevamente. Ahora todo funcionó de 10!...el tema esta solucionado...


Cita:
Empezado por agustibaldo
...En nuestro grupo de trabajo, podemos compilar los proyectos de todos, por lo que estas opciones deberían estar seteadas en todos los proyectos cuando esto no ocurre en todos los casos...Igualmente sigo investigando y cualquier cosa les comento...
Te sugiero revisar la ruta por defecto al momento de compilar un proyecto localmente o en red.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 26-09-2013 a las 19:17:09.
Responder Con Cita
  #8  
Antiguo 26-09-2013
agustibaldo agustibaldo is offline
Miembro
 
Registrado: nov 2006
Posts: 105
Poder: 20
agustibaldo Va por buen camino
Cita:
Todos los mensajes de un hilo están numerados, el Msg #6 es el sexto mensaje de este hilo y su código asociado.
Jajajaja, una vez que hice el posteo de mi última respuesta, ví que habías hecho una entrada anterior (la cual no se había refrescado) y entendí que era el Msg #6, edité mi entrada pero llegaste a leerla.. Je!

De todas formas, volviendo a lo que decís revise las rutas y están correctamente apuntadas a los directorios locales donde guarda el EXE y los DCU.
Muchas gracias!
Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Caracteres extraños en un Memo Sr.Scorpion Varios 1 23-10-2008 19:54:59
Caracteres extraños en un Memo Sr.Scorpion Varios 6 23-10-2008 14:47:05
Caracteres extraños (#$D#$A) Iuconlas Varios 2 23-09-2005 17:09:05
caracteres extraños en reportes Tangela Conexión con bases de datos 0 21-01-2004 19:56:22
Caracteres extraños Germi Conexión con bases de datos 1 14-10-2003 15:26:18


La franja horaria es GMT +2. Ahora son las 09:28:36.


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