Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   error en AssignFile (https://www.clubdelphi.com/foros/showthread.php?t=46351)

camambrini 30-07-2007 05:31:15

error en AssignFile
 
Hola a todos nuevamente en el foro esta vez para pedir ayuda porque este problema me esta volviendo loco, el asunto es que deseo crear un archivo binario con tipo pero me da error el codigo que utilizo es el siguiente

procedure carga_config;
var
config:registro;
archivo: file of registro;
begin
{$i-}
AssignFile(archivo,'domo.cgf');
reset(arch);
blockread(arch,sizeof(registro);
CloseFile(configa);
{$I+}

el error esta en AssignFile y es el siguiente:
[Error] domo.pas(208): There is no overloaded version of 'AssignFile' that can be called with these arguments

alguien podria explicarme que ocurre y como lo soluciono?
desde ya muchas gracias

Enan0 30-07-2007 13:43:05

Bueno una tonteria!!, Pero! estas seguro que la aplicacion se esta ejecutando en el mismo lugar que se encuentra el domo.cfg?
Yo te aconsejaria que utilises el path completo, ya que algunas veces se pierde la ruta.
Podrias vefiricarl o con

Código Delphi [-]

If FileExists('miarchivo') then
  reset(arch)
else
  rewrite(arch);

o mostrar un mensaje de que el archivo no existe.

Saludos

defcon1_es 30-07-2007 13:47:15

Cita:

Empezado por camambrini
deseo crear un archivo binario con tipo pero me da error el codigo que utilizo es el siguiente

procedure carga_config;
var
config:registro;
archivo: file of registro;
begin
{$i-}
AssignFile(archivo,'domo.cgf');
reset(arch);
blockread(arch,sizeof(registro);
CloseFile(configa);
{$I+}

el error esta en AssignFile y es el siguiente:
[Error] domo.pas(208): There is no overloaded version of 'AssignFile' that can be called with these arguments

Hola, creo que no has copiado bien el código (o no usas Delphi 6),
porque hay varias cosas que no me cuadran...

Código Delphi [-]
procedure carga_config;
var
//  config:registro; esta variable no se usa para nada...creo.
  archivo: file of registro;
  Buffer: array[1..2048] of Char;
begin
{$i-}
  AssignFile(archivo,'domo.cgf');
  reset(archivo);
  blockread(archivo,Buffer,sizeof(registro));
  CloseFile(archivo);
{$I+}
end;

En la ayuda de Delphi 6, viene la siguente declaracion de BlockRead:
Código Delphi [-]
procedure BlockRead(var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);
Y creo que por eso el compilador te da ese error, no por el assignfile, sino por el blockread...

Enan0 30-07-2007 13:50:19

Cita:

Empezado por camambrini
deseo crear un archivo

:eek:

Creo que no leimos bien!1

Si es crear, cambia el RESET, por REWRITE
ya que reWrite si el archivo no existe lo crea, y si existe lo hace Bosta :D

Enan0 30-07-2007 13:56:50

Cita:

Empezado por camambrini
Código Delphi [-]
procedure carga_config;
var
config:registro;
archivo: file of registro;
begin
{$i-}
AssignFile(archivo,'domo.cgf');
reset(arch);
blockread(arch,sizeof(registro);
CloseFile(configa);
{$I+}

Primero que nada Verifica el codigo!! porque?
ESTAS HACIENDO UN ASSING a "ARCHIVO"
pero Reseteas ARCH!!!!!!
en block Read como dijo "defcon1_es" esta incompleto!!
y por ultimo!! estas Cerrando cualquier cosa!!
CloseFile(configa) calculo que querras decir!! config!!
pero de todos modos. tendria que ser "archivo" o en el peor de los casos "arch"

fijate y eso contanos como va la cosa

camambrini 30-07-2007 15:56:00

assignfile
 
ok en 1º er lugar quiero agradeser la pronta repuesta y 2º quiero disculpame pues copie un bloque del programa que estava en proceso de modificacion y esta por ende no tiene sentido
el codi real es:

type
registro = record
salida : array[1..8]of integer;
clav1:string[30];
clav2:string[30];
saludo:string[30];
menu: array [1..8]of string[50];
articulo:array[1..8]of string[30];
ring:integer;
end;

procedure TForm1.Button1Click(Sender: TObject);
var reg:registro;
arch:file of registro;
begin
assignfile(arch,'c:\domo\config.dat');
reset(arch);
read(arch,reg);
end;

el error se produce en assignfile y el error es:
[Error] domo.pas(208): There is no overloaded version of 'AssignFile' that can be called with these arguments

Enan0 30-07-2007 16:10:24

A ver, Podrias contarnos que version de delphi estas usando?

ya que al parecer todo funciona todo bien.. yo lo probre y no me da error!
estoy trabajando con delphi 5
y si lo depuras paso a paso.. en que linea te da el error exactamente

camambrini 30-07-2007 20:02:48

uso delphi7 y el error es el la linea de assingnfile.lo extraño es que genro una nueva aplicacion pruevo este codigo y funciona correctamemte asi que no se que puede estar pasado, en la plaicacion donde falla es la unica estructura que utilizo y tambien es el unico archivo que manejo. la plicacion corre sobre xp sp2

desde ya muy agradecido por responder

roman 30-07-2007 20:23:45

El problema lo veo muy raro porque en Delphi 7, los parámetros que le pasas deben funcionar sí o sí. Lo único que se me ocurre es que ese AssignFile no sea el que todos estamos pensando, lo cual podría ocurrir si estás incluyendo alguna unidad que tenga un procedimiento con ese mismo nombre. Sea esto o no, pon el cursor del ratón sobre el nombre del procedimiento y verifica que el hint diga System.AssignFile, y revisa que la lista de parámetros (Ctrl+Shift+Espacio) sea en efecto (var F: File; FileName: String).

// Saludos

camambrini 31-07-2007 02:55:03

OK roman sos un genio, te comento que todo estva bien uncluso verifique lo que me digiste pero merche preso no funciono, finalmente se me ocurrio la siguiente solucion

System.AssignFile(var F: File; FileName: String);

de esta forma funciona de 10

estoy muy agradecido por la hayuda de todos


La franja horaria es GMT +2. Ahora son las 19:40:06.

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