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
  #1  
Antiguo 12-07-2013
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
Ayuda con error "Variable required"

Tengo el siguiente codigo :

Código Delphi [-]
unit test;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var test: TFileStream;

begin

test:= TFileStream.Create( ExtractFilePath( Application.ExeName ) + 'programa.exe', fmOpenWrite );
test.Position := test.Size;

test.Write('{test}'+Edit1.Text+'{test}',1024);

test.Free;

end;

Pero cuando lo cargo me dice [DCC Error] test.pas(36): E2036 Variable required

¿ Alguien me podria explicar como lo soluciono ?
Responder Con Cita
  #2  
Antiguo 12-07-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Lepuke.

Código Delphi [-]
...
var
  test: TFileStream;
  str: string;
begin
  test:= TFileStream.Create( ExtractFilePath( Application.ExeName ) + 'programa.exe', fmOpenWrite );
  try
    test.Position := test.Size;
    str := '{test}' + Edit1.Text + '{test}';
    test.Write(str, 1024);
  finally
    test.Free;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 12-07-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

La sugerencia del mensaje anterior soluciona el mensaje de error. Pero me quedé pensando que si tu intención es guardar la cadena textual al fin del archivo, ese código no te va a funcionar.

Hacelo de este modo:
Código Delphi [-]
var
  str : string;
  i   : Integer;
begin
  str := ExtractFilePath( Application.ExeName ) + 'programa.exe';
  with TFileStream.Create(str, fmOpenReadWrite) do
  try
    str := '{test}' + Edit1.Text + '{test}';
    Seek(0, soFromEnd);
    for i:= 1 to Length(str) do
      Write(str[i], 1);
  finally
    Free;
  end;
end;

O también podrías hacer:
Código Delphi [-]
var
  str : string;
  vec : array[0..1024] of char;
begin
  str := ExtractFilePath( Application.ExeName ) + 'programa.exe';
  with TFileStream.Create(str, fmOpenReadWrite) do
  try
    str := '{test}' + Edit1.Text + '{test}';
    Seek(0, soFromEnd);
    StrPCopy(vec, str);
    WriteBuffer(vec, Length(str));
  finally
    Free;
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 12-07-2013 a las 19:03:18.
Responder Con Cita
  #4  
Antiguo 12-07-2013
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
Antes que nada , gracias por la ayuda , pero me han surgido dos grandes problemas , el primero es que cada vez que uso un edit en la variable no figura nada en el editor winhex , te lo digo porque cada vez que compilo abro el ejecutable con winhex y controlo , eso si , cuando uso texto solo sin nigun edit se muestra mas que bien en winhex , el otro problema es que no entiendo porque el codigo en el que me ayudaste la otra vez tiene problemas para mostrarme bien las impresiones que me ayudaste hacer en este post , hay veces que se muestran (rara vez) pero en las demas veces no eh tenido suerte.

Te dejo la imagen que saque del winhex porque el siguiente codigo no me lo muestra completo.



Código Delphi [-]
var
  Buffer: array [0 .. 1023] of Char;
  str: string;
begin
  Memo1.Clear;
  str := ExtractFilePath(Application.ExeName) + 'test.exe';
  with TFileStream.Create(str, fmOpenRead) do
  try
    Memo1.Lines.BeginUpdate;
    SetLength(str, 1024);
    while Position < Size do
    begin
      Read(Buffer, 1024);
      StrCopy(PChar(str), Buffer);
      Memo1.Lines.Add(str);
    end;
  finally
    Memo1.Lines.EndUpdate;
    Free;
  end;
end;
Responder Con Cita
  #5  
Antiguo 12-07-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Lepuke.
Cita:
el primero es que cada vez que uso un edit en la variable no figura nada en el editor winhex , te lo digo porque cada vez que compilo abro el ejecutable con winhex y controlo , eso si , cuando uso texto solo sin nigun edit se muestra mas que bien en winhex
La respuesta es simple: Una constante literal será visible con un editor hexadecimal sin problemas. Pero cláramente ningún editor mostrará el valor de una "variable", ya que por su esencia, no hay manera de que pueda conocer su valor.
Recorda que una variable toma un valor luego de que uno le sea asignado durante la ejecución de la aplicación.

Cita:
el otro problema es que no entiendo porque el codigo en el que me ayudaste la otra vez tiene problemas para mostrarme bien las impresiones que me ayudaste hacer en este post , hay veces que se muestran (rara vez) pero en las demas veces no eh tenido suerte.
No entiendo a que te referis con impresiones y tampoco me queda claro que es lo que no se muestra bién.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 12-07-2013
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
con impresiones me refiero a que yo estoy intentando agregar un valor a una aplicacion exe que es lo que estoy haciendo en este post , para despues con la otra aplicacion exe mostrar el valor que le deje marcado al exe (para sacar eso se abre a si mismo) , los dos programas son en delphi , por eso necesito mostrar todo el contenido de la segunda aplicacion que marque con la primera.
se me esta complicando mucho porque no entiendo un pepino de delphi por eso te muestro la imagen del winhex que es lo que estoy intentando sacar del exe lo que esta entre {test}
Responder Con Cita
  #7  
Antiguo 13-07-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Lepuke.
Cita:
con impresiones me refiero a que yo estoy intentando agregar un valor a una aplicacion exe que es lo que estoy haciendo en este post , para despues con la otra aplicacion exe mostrar el valor que le deje marcado al exe (para sacar eso se abre a si mismo)
Revisa en este enlace: Dejar una marca en los archivos

Pero como un humilde consejo y sin ningún ánimo de ofender, si como vos comentas "no entendes un pepino de delphi", lo que estas encarando es un poco elevado para incorporarlo dentro de los primeros proyectos.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 13-07-2013 a las 00:45:31.
Responder Con Cita
  #8  
Antiguo 13-07-2013
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
ok , gracias por el consejo , que desgracia estoy tan cerca solo me falta entender porque no me muestra todo el codigo binario.
Responder Con Cita
  #9  
Antiguo 13-07-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Lepuke.

Lo que podrías hacer es detallar bién que salida esperas, cuál te muestra (cuando lo hace mál) y el código involucrado (el que empleas para mostrarlo).
De ese modo seguramente podremos darte una ayuda más especifica y provechosa.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 13-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.058
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
[analogía]Yo no entiendo ni un pepino de mecánica, pero he desarmado el motor de mi coche y ahora tengo unos pistones que me han dicho que si los recorto de una forma especial conseguiré que sea más potente que el Ferrari de Alonso, ¿alguien me puede ayudar?[/analogía]
Responder Con Cita
  #11  
Antiguo 13-07-2013
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
solucione la parte mas dificil que era leer el codigo completo , ahora me falta la primera que te mencione que no entiendo porque no funciona , creo que no me explique bien en mi primer punto asi que redacto de nuevo el problema

Tengo el siguiente codigo :


Código Delphi [-]
testar:= TFileStream.Create( ExtractFilePath( Application.ExeName ) + 'test.exe', fmOpenWrite );
testar.Position := testar.Size;

aca:= '{test}test{test}';

testar.Write(aca,1024);

Este imprime bien la edicion en el codigo binario porque cuando lo veo con WinHex se ve bien , pero este otro codigo :


Código Delphi [-]
testar:= TFileStream.Create( ExtractFilePath( Application.ExeName ) + 'test.exe', fmOpenWrite );
testar.Position := testar.Size;

aca:= '{test}' + Edit1.Text + '{test}';

testar.Write(aca,1024);

No muestra nada de nada porque parece que hay un problema con el edit cuando se quiere editar el codigo binario , es raro porque cuando
lo uso todo con comillas simples anda pero con el ejemplo del edit no funciona , ya casi termino solo me falta este detalle que no se porque es.

Nota : el programa no da ningun mensaje de error
Responder Con Cita
  #12  
Antiguo 13-07-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Lepuke Ver Mensaje
...ahora me falta la primera que te mencione que no entiendo porque no funciona , creo que no me explique bien en mi primer punto asi que redacto de nuevo el problema

Tengo el siguiente codigo :
Código Delphi [-]
aca:= '{test}test{test}';
Este imprime bien la edicion en el codigo binario porque cuando lo veo con WinHex se ve bien , pero este otro codigo :

Código Delphi [-]
aca:= '{test}' + Edit1.Text + '{test}';
No muestra nada de nada porque parece que hay un problema con el edit cuando se quiere editar el codigo binario , es raro porque cuando lo uso todo con comillas simples anda pero con el ejemplo del edit no funciona , ya casi termino solo me falta este detalle que no se porque es.
...
Hola lepuke.

La explicación a ese comportamiento te la dí en el mensaje (#5), no podés ver el contenido de una variable o propiedad cuando aún no se le ha asignado un valor.

El compilador/linkeador traducirán el identificador (nombre de variable) a la dirección de memoria donde residirá el valor que se asigne a ella en tiempo de ejecución.

Resumiendo, no esperes ver algo como:
Cita:
{test}Edit1.Text{test}
o:
Cita:
{test}Edit1{test}
Por que eso no sucederá.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #13  
Antiguo 14-07-2013
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
en cualquier momento me vuelvo loco y rompo la pc contra la pared xDD.

ya arregle el problema que te pregunte por segunda vez para cualquiera que tenga el mismo problema les dejo la solucion.

Código Delphi [-]
test.Write(PChar(tu_cadena)^,1024);

dandole vueltas al asunto recorde que me dijiste como poner texto al final del archivo binario , no quiero molestarte o pedir mucho porque necesito probar como seria la cosa pero totalmente al principio.

me podrias dar un ejemplo de como quedaria tu codigo al principio del programa ?
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
QuickReport - Banda "detail" con altura variable mcs Impresión 3 15-12-2010 09:03:16
"ADOQUERY3: Parameter 'p' not found" error (POR FAVOR AYUDA) JuanchoDev Conexión con bases de datos 20 21-04-2010 22:36:19
"OBJECT OR CLASS TYPE REQUIRED" en "APPLICATION EXENAME" Xavierator Varios 3 27-10-2008 09:09:50
Traducción del mensaje "Field value required" menfis Conexión con bases de datos 1 18-02-2005 11:43:03
Tipo de Variable."String" ó "Double" UTECYBER OOP 7 15-12-2003 20:25:39


La franja horaria es GMT +2. Ahora son las 10:17:15.


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