Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con mi base de modulo. (https://www.clubdelphi.com/foros/showthread.php?t=86122)

carlosprotos 20-06-2014 06:02:09

Ayuda con mi base de modulo.
 
Tengo un problema el cual no puedo resolver aun , necesito que me ayuden a crear una base para obtener un modulo.
Me gustaría crear una base de modulo para mi entrenador de juego.

Código:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    edit1: TEdit;
    label1: TLabel;
    chekbox1: TCheckBox;
    procedure checkbox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.checkbox1Click(Sender: TObject);
var
module:pchar;
begin
module:=pchar(edit1.text);
if checkbox1.Checked=True then
pdword(GetModuleHandle(edit1.text)+$25D10):=999;
end;

end.

mi direccion en C.E es csh5F4.tmp+$25D10.
donde edit1 tengo que colocar mi modulo que es el csh5F4.tmp... pero mi problema es que ese modulo cambia de nombre cada vez que entro al juego.el unico cambio que hay son las ultimas 3 palabras , a veces esta como csh5F4.tmp , cuando entro
de nuevo se cambia a csh6D1.tmp , luego csh2FC.tmp,etc , y asi sucesivamente. Y debo de crear una base
para que me genere el modulo automaticamente en edit1 , y no estar buscando el modulo
en la carpeta :C:\Users\Rodrix\AppData\Local\Temp (en esa carpeta aparece el modulo ,nuevo y cambiado de nombre, y con la hora y fecha con la que ingrese al juego) y copiar el nombre y pegarla en edit1 para que me trabaje.
Alguna solución o fuente..? :o

Neftali [Germán.Estévez] 20-06-2014 10:05:05

Personalmente no he entendido casi nada. :(
Te vas mucho por las ramas y no concretas en lo que necesitas...

carlosprotos 20-06-2014 19:25:39

Cita:

Empezado por Neftali (Mensaje 478095)
Personalmente no he entendido casi nada. :(
Te vas mucho por las ramas y no concretas en lo que necesitas...

Lo que necesito es una base de address.en mi caso la direccion tiene 8 digitos ejemplo :346FD2D1
pero necesito que trabaje en todos los sistemas , entonces 346FD2D1 = Csh4F5.tmp+6FD2D1.
mi problema seria en que el csh4F4.tmp cambia las ultimas 3 palabras y puede estar como cshADF.tmp,etc cada vez que ingreso al juego. Entonces necesito alguna función para que me genere el cshxxx.tmp actualizado de forma automaticamente sin estar buscandolo y pegando para que me de la base.

Ejemplo:
Modulo = csh5D70.tmp -> base = 655B0000 entonces la direccion seria : 655BD2D1 (csh4F5.tmp+6FD2D1). eso es lo que necesito. :o:o

Casimiro Notevi 20-06-2014 21:15:56

Tampoco lo entiendo.

orodriguezca 21-06-2014 03:08:27

A ver si entendí...
 
Después de leer varias veces entiendo que lo que necesitas es el nombre del archivo mas reciente existente en la carpeta "C:\Users\Rodrix\AppData\Local\Temp" con nombre csh???.tmp (??? son los comodines para el nombre del archivo) para colocarlo en la caja de texto Edit1?. Por favor confirma si esto es lo que necesitas.

carlosprotos 21-06-2014 04:37:46

Cita:

Empezado por orodriguezca (Mensaje 478150)
Después de leer varias veces entiendo que lo que necesitas es el nombre del archivo mas reciente existente en la carpeta "C:\Users\Rodrix\AppData\Local\Temp" con nombre csh???.tmp (??? son los comodines para el nombre del archivo) para colocarlo en la caja de texto Edit1?. Por favor confirma si esto es lo que necesitas.

Exacto!:D :D, necesito eso , el cshxxx.tmp actualizado (aunque hay 5 cshxxx.tmp, solo el de fecha y hora en que entre al juego es la que funciona) , quiero que automaticamente me aparesca el actualizado en el edit1 para que me funcione. cshxxx.tmp+$2D4F50 = 9999;

ecfisa 21-06-2014 06:55:28

Hola carlosprotos.

Tomando en cuenta que el último archivo generado será el que tenga la fecha mas reciente de modificación, creo que podrías adaptar la función mencionada en este enlace: Saber el ultimo archivo de una carpeta :

Código Delphi [-]
function LastModifiedFile(DirName: string): string;
var
  SR: TSearchRec;
  MaxF, aux: TDateTime;
  MaxN: string;
begin
  DirName:= IncludeTrailingPathDelimiter(DirName);
  MaxF:= 1.00002;
  MaxN:= '';
  if FindFirst(DirName + 'csh*.tmp', faArchive, SR) = 0 then
  begin
    repeat
      aux := FileDateToDatetime(SR.Time);
      if aux > MaxF then
      begin
        MaxF := aux;
        MaxN := DirName + SR.Name;
      end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
  Result := MaxN;
end;

Ejemplo de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  LastFile: PChar;
begin
  LastFile:= PChar(LastModifiedFile('C:\Users\Rodrix\AppData\Local\Tmp'));
  ShowMessage(LastFile);
end;

( No deja de asombrarme la capacidad interpretativa de orodriguezca v:-)v )

Saludos :)

Casimiro Notevi 21-06-2014 09:29:37

Cita:

Empezado por ecfisa (Mensaje 478155)
( No deja de asombrarme la capacidad interpretativa de orodriguezca v:-)v )

Sin embargo, otros :rolleyes: necesitan capacidad expresiva escrita para darse a entender :D

orodriguezca 21-06-2014 16:07:32

Cita:

Empezado por ecfisa (Mensaje 478155)

( No deja de asombrarme la capacidad interpretativa de orodriguezca v:-)v )

Saludos :)

Hola ecfisa, yo también estoy asombrado :) ; solo fue un fugaz momento de inspiración.


Saludos,

carlosprotos 21-06-2014 20:48:07

U.u
 
Gracias ecfisa , esta excelente ,mas bien dime como seria para que me aparezca en el ShowMessage solo el nombre del "cshxxx.tmp" sin la direccion :rolleyes:(C:\Users\Rodrix\AppData\Local\Tmp\cshxxx.tmp')
:D:D:D

ecfisa 21-06-2014 21:41:21

Hola carlosprotos.

Usando la función anterior, un ejemplo para obtener: ruta + nombre + extensión, nombre + extensión y el nombre solo:
Código Delphi [-]
var
  FullName, NameAndExt, OnlyName: string;
begin
  FullName:= LastModifiedFile('C:\Users\Rodrix\AppData\Local\Tmp');
  NameAndExt:= ExtractFileName(FullName);
  OnlyName:= ChangeFileExt(NameAndExt, '');
  ShowMessage(FullName + #10 + NameAndExt + #10 + OnlyName);
  ...

Saludos :)


La franja horaria es GMT +2. Ahora son las 08:28:20.

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