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 24-10-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec Ver Mensaje
algún moderador serio puede borrar los mensajes que considere oportuno.
En estos momentos no contamos con ese tipo de moderadores

// Saludos
Responder Con Cita
  #2  
Antiguo 24-10-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Por cierto, no sé a quién iban dirigidas las fanfarrias, pero en un sano ejercicio de autoestima ya las he escuchado varias veces

// Saludos
Responder Con Cita
  #3  
Antiguo 24-10-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.144
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Las fanfarrías de la Diana iban, sin lugar a duda alguna, dirigidas a un humilde servidor de ustedes.
Responder Con Cita
  #4  
Antiguo 24-10-2012
Avatar de Al González
[Al González] Al González is online now
In .pas since 1991
 
Registrado: may 2003
Posts: 5.616
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Todo esto es muy extraño, incluyendo exquisita música del video.

Tu teoría es cuando menos interesante, David, puede que por ahí vayan los tiros.

A ver, paso siguiente: ¿podrían ayudarme a averiguar en qué versión de Delphi apareció la función GetFileVersion y desde cuándo tiene ese comentario de "GetFileVersionInfo modifies the filename..."?

Vamos, aquellos que tengan Delphis anteriores al 7, ¿podrían por favor abrir la unidad SysUtils.pas para verificar esto? Creo que esa unidad no existía en las primeras versiones, pero en esos casos y hasta para más seguridad está la alternativa de buscar GetFileVersion con Find in Files sobre los fuentes de la RTL / VCL (C:\Archivos de programa\Borland\DelphiX\Source, marcando la opción "Include subdirectories").

Muchas gracias.
__________________
Tras casi seis años de trabajar para una empresa alemana como desarrollador Delphi, se vieron forzados a dejarme ir (temas presupuestales). Así que ahora estoy abierto a escuchar nuevas ofertas.
Responder Con Cita
  #5  
Antiguo 24-10-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.144
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Mi teoría parecía buena, pero, según la escribía me sonaba raro, porque, en efecto, existen en Delphi diferentes mecanismos para mantener la compatilidad hacia atrás sin necesidad de hacer algo como lo dicho. De todas formas... quién sabe... igual he acertado a la primera, ¡que ya sería una novedad!

Por otro lado, supongo que no te servirá de mucho, pero, acabo de comprobar que tanto en Delphi 2007 como en Delphi XE2 aparece dicha función implementa y comentada tal como has señalado. Lamento no disponer de versiones de Delphi anteriores para mirar a ver.
Responder Con Cita
  #6  
Antiguo 24-10-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.695
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Delphi 5, en comctrls.pas

Código Delphi [-]
function GetComCtlVersion: Integer;
var
  FileName: string;
  InfoSize, Wnd: DWORD;
  VerBuf: Pointer;
  FI: PVSFixedFileInfo;
  VerSize: DWORD;
begin
  if ComCtlVersion = 0 then
  begin
    // GetFileVersionInfo modifies the filename parameter data while parsing.
    // Copy the string const into a local variable to create a writeable copy.
    FileName := ComCtlDllName;
    InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd);
    if InfoSize <> 0 then
    begin
      GetMem(VerBuf, InfoSize);
      try
        if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf) then
          if VerQueryValue(VerBuf, '\', Pointer(FI), VerSize) then
            ComCtlVersion := FI.dwFileVersionMS;
      finally
        FreeMem(VerBuf);
      end;
    end;
  end;
  Result := ComCtlVersion;
end;
Responder Con Cita
  #7  
Antiguo 25-10-2012
Avatar de Al González
[Al González] Al González is online now
In .pas since 1991
 
Registrado: may 2003
Posts: 5.616
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Gracias, Casi.

Y en XE2 tampoco varían las cosas, tiene el mismo comentario en el código.

Pienso que el origen de esto pudo ser un defecto de alguna de las versiones de Windows contemporáneas de la primera versión de Delphi que tuvo esa particularidad. ¿Alguien que pueda probar sobre Windows 95, 98, Me, 2000?

Hay algo que puede significar una pista: La modificación a la que alude el comentario podría tener que ver con la aparición de los "nombres largos" en las rutas de archivos. Ya saben, antes un nombre de archivo o directorio no podía tener más de 8 caracteres ni llevar espacios, ahora sí. No obstante, luego, en algunas ventanas de comandos, algunos de esos nombres largos aparecían con un nombre corto como "ARCHIVO~" porque Windows en realidad hacía una especie de chapuza guardando los nombres largos como nombres cortos (no sé si por el formato del disco, o algo así).

Creo que quizá la función modificaba la ruta dada para convertir el nombre largo a su nombre corto "real", y así extraer del archivo el recurso que guarda los datos de versión. O bien, y relacionado con esto, para convertir el nombre por completo a mayúsculas. El hecho es que la modificación no podría (no debería) ser para crear una cadena más larga, sino una cadena o más corta o de la misma longitud, pues esa memoria le pertenece a la aplicación que llama a la función.

De todas formas espero el mismo favor que ha hecho Casimiro (gracias por la molestia, Casi), de quienes tengan versiones de Delphi anteriores a la 5.
__________________
Tras casi seis años de trabajar para una empresa alemana como desarrollador Delphi, se vieron forzados a dejarme ir (temas presupuestales). Así que ahora estoy abierto a escuchar nuevas ofertas.
Responder Con Cita
  #8  
Antiguo 25-10-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Hola,
Al ¿No tendrá que ver algo que acabo de leer en el MSDN?:

Cita:
lptstrFilename [in]
Type: LPCTSTR
The name of the file. If a full path is not specified, the function uses the search sequence specified by the LoadLibrary function.
Allí dice que si no se especifica una ruta completa se hará una búsqueda de secuencia. Posiblemente a eso se refiera... en una de esas esta función se invoca de forma recursiva para poder invocar reiteradamente a la búsqueda y poder encontrar así la información y para ahorrarse parámetros y variable se sobreescribe lo pasado en el parámetro.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #9  
Antiguo 25-10-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por roman Ver Mensaje
Quizá algún "bug" en alguna versión antigua de Windows y el "parche se quedó hasta nuestros dias. En todo caso la ocumentación de la API no dice nada al respecto.
Cita:
Empezado por Al González Ver Mensaje
Pienso que el origen de esto pudo ser un defecto de alguna de las versiones de Windows contemporáneas de la primera versión de Delphi que tuvo esa particularidad.
Bueno, al menos no soy el único...



// 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
Pasar como parametro la ruta de una imagen richy08 Impresión 6 19-08-2008 22:56:00
llamar un archivo asi '192.168.1.1:\ruta\archivo.frf' IVAND Varios 5 12-04-2008 16:18:54
Ruta absoluta de un archivo Alexis De la Cr PHP 3 17-06-2006 23:41:22
ruta de un archivo ddd_ddd Varios 1 07-06-2006 23:08:34
Ruta y nombre de archivo INI jfranco Varios 2 27-02-2004 16:44:23


La franja horaria es GMT +2. Ahora son las 04:13:58.


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