Bueno pues estoy poco a poco intentando dejar al VB6 e irme a Delphi, hoy programando una mierdecilla para practicar y acostumbrarme como funciona el delphi, me salta este puto error a que no se que debe.

Código: Seleccionar todo

procedure TForm1.Button3Click(Sender: TObject);
var
Cad :String;
begin
Cad := LinkCryptRot(ReadFile(Edit2.text), 1000);
CopyFile(PChar(Edit.text), PChar(Edit2.text), true);
ShowMessage(LinkCryptRot(Edit2.Text, 4));
end;
No esta completado esa parte, solo que antes era un simple copiador de archivos y poco a poco lo estoy convirtiendo en un cliente para crypter. Me da el error indicado en el titulo en la linea de:

Código: Seleccionar todo

Cad := LinkCryptRot(ReadFile(Edit2.text), 1000);
Te lo muevo a desarrollo y dudas de programación...

El problema te lo está indicando el mismo compilador si se esta esperando un dato de tipo Cardinal (numérico), y le pasas un objeto Tcaption o una cadena pues te va a marcar error, revisa lo que le estas pasando como parámetros a las funciones :P
//mHmm..
El Edit2. Aun esta vacio, aun no he seleccionado nada, pero seleccionaria con un dialog por ejemplo test.exe, para que leara el archivo. "readfile"
Coloca la función completa "LinkCryptRot"
Aunque creo que ya te dije la solución por msn, te lo aclaro por aquí, delphi es mi puta pasión actualmente y quiero seguir avanzando :P

Bien, supongamos que queremos cifrar un texto y mostrar en un msgbox el resultado, para ello he agregado un TEdit y un botón.

Te muestro el código:

Código: Seleccionar todo

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
// Encriptacion ROT -1
// Coder: Linkgl
// Lenguaje: Delphi
// Funcion-linkgl.blogspot.com
// Indetectables.net/foro
function LinkCryptRot(Cad:String;Lar:Integer):String;
var
i:Integer;
Temp:String;
begin
  for i:=1 to Lar do
  begin
    if Ord(Cad[i]) = 0 then
      Temp:=Temp + Chr(255)
    else
      Temp:=Temp + Chr(Ord(Cad[i])-1);
  end;
  Result:=Temp;
end;

function LinkDecryptRot(Cad:String;Lar:Integer):String;
var
i:Integer;
Temp:String;
begin
  for i:=1 to Lar do
  begin
    if Ord(Cad[i]) = 255 then
      Temp:=Temp + Chr(0)
    else
      Temp:=Temp + Chr(Ord(Cad[i])+1)
  end;
  Result:=Temp;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
polla: string;
begin
polla:= LinkCryptRot(edit1.Text,strlen(pchar(edit1.Text)));
showmessage(polla);
end;

end.
Te cito las palabras de linkgl del modo de uso de su función:
Sólo pasenle el buffer como primer parámetro y el tamaño del buffer como segundo parámetro.
En mi caso, utilizo strlen por ejemplo.

El error que a tí te da es por el uso de ReadFile, ReadFile no se debe usar así, requiere de otros parámetros, lo que tú necesitas usar es por ejemplo el ReadFile de la unit creada por Xash: [Enlace externo eliminado para invitados]

Lo que te recomiendo, es que renombres la funcion de ReadFile por otro nombre que tú elijas, para prevenir que delphi se vuelva loco y no 'sepa' que ReadFile quieres utilizar.

Saludos!
UDTools.net
GitHub: https://github.com/MetalUDT
Gracias metal, todo resuelto con tu respuesta. Saludos capo.
Cerrado

Volver a “Delphi”