🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: es.comp.os.linux.programacion
4 messages
4 total messages Started by lqf Sat, 13 Jan 2007 11:24
URGENTE..PASCAL
#640
Author: lqf
Date: Sat, 13 Jan 2007 11:24
24 lines
1984 bytes
Hola:

Lo primero de todo me gustaria decir que me acabo de empenzar a mirar
este lenguaje(PASCAL) y estoy un poco perdido asi que si hago alguna
pregunta facil o erronea espero q lo entendais.


Despues de todo este rollo aqui va 1 de mis preguntas por ahora:
- Yo tengo en un fichero datos entonces abro ese fichero le recorreo
hasta que encuentro el dato q me interesa entonces voy a una funcion en

la cual lo que quiero es cambiar unos datos de la linea que he
encontrado. Aqui esta mi problema cuando abro el fichero(¿Se puede
tener un fichero para leer y escribir ?) al poner rewrite me
sobreescribe el fichero y solo me pone la ultima linea, por lo tanto me

borra todas las lineas y no solo updatea la que yo quiero.


Muchas gracias y espero noticias de alquien lo antes posible que me
urge.Ademas si necesitas mas datos preguntamelo. 


Jose
Re: URGENTE..PASCAL
#641
Author: Pascal Bourguignon
Date: Sat, 13 Jan 2007 14:48
57 lines
3610 bytes
"lqf" <abcdefghijoseantonio@hotmail.com> writes:
> Hola:
>
> Lo primero de todo me gustaria decir que me acabo de empenzar a mirar
> este lenguaje(PASCAL) y estoy un poco perdido asi que si hago alguna
> pregunta facil o erronea espero q lo entendais.
>
>
> Despues de todo este rollo aqui va 1 de mis preguntas por ahora:
> - Yo tengo en un fichero datos entonces abro ese fichero le recorreo
> hasta que encuentro el dato q me interesa entonces voy a una funcion en
>
> la cual lo que quiero es cambiar unos datos de la linea que he
> encontrado. Aqui esta mi problema cuando abro el fichero(�Se puede
> tener un fichero para leer y escribir ?) 

En estandard basico, no.  Pero en las implementaciones, hay
generalmente extensiones para poder abrir un archivo en
lectura/escritura.

> al poner rewrite me
> sobreescribe el fichero y solo me pone la ultima linea, por lo tanto me
> borra todas las lineas y no solo updatea la que yo quiero.

En effecto.


Pero, si abres el archivo en lectura/escritura, en general el dato que
quieres modificar va a cambiar de tama�o, asi que tienes que
implementar una gestion del archivo m�s complicada, con indices, etc,
o bien tienes que hacer lo que debes hacer con lo basico: abrir dos
archivos, el antiguo en lectura, un nuevo en escritura, y copia del
antiguo al nuevo hasta que encuentres el dato, y en lugar de escribir
el dato, escribes el valor nuevo, y finalmente, terminas de copiar el
antiguo archivo sobre el nuevo.


Hay que acordarse que cuando el estandard Pascal fue escrito,
basicamente se usaba solo bandas, asi que solo archivos sequenciales.



Con FreePascal, puedes gdbm, lo que te permite acceder a un dato por
una clave y cambiar lo por otro dato.  El codigo gdbm modifica el
archivo automaticamente para adaptarse al tama�o del nuevo dato.

Pero los archivos indexados en general son archivos binarios.  Si tu
archivo debe ser un archivo texto, con l�neas de longitudes
diferentes, sin indice solo se puede usar el accesso sequencial.

-- 
__Pascal Bourguignon__                     http://www.informatimago.com/

NOTE: The most fundamental particles in this product are held
together by a "gluing" force about which little is currently known
and whose adhesive power can therefore not be permanently
guaranteed.
Re: URGENTE..PASCAL
#653
Author: lqf
Date: Sat, 20 Jan 2007 10:38
62 lines
3864 bytes
Pascal Bourguignon ha escrito:
> "lqf" <abcdefghijoseantonio@hotmail.com> writes:
> > Hola:
> >
> > Lo primero de todo me gustaria decir que me acabo de empenzar a mirar
> > este lenguaje(PASCAL) y estoy un poco perdido asi que si hago alguna
> > pregunta facil o erronea espero q lo entendais.
> >
> >
> > Despues de todo este rollo aqui va 1 de mis preguntas por ahora:
> > - Yo tengo en un fichero datos entonces abro ese fichero le recorreo
> > hasta que encuentro el dato q me interesa entonces voy a una funcion en
> >
> > la cual lo que quiero es cambiar unos datos de la linea que he
> > encontrado. Aqui esta mi problema cuando abro el fichero(¿Se puede
> > tener un fichero para leer y escribir ?)
>
> En estandard basico, no.  Pero en las implementaciones, hay
> generalmente extensiones para poder abrir un archivo en
> lectura/escritura.
>
> > al poner rewrite me
> > sobreescribe el fichero y solo me pone la ultima linea, por lo tanto me
> > borra todas las lineas y no solo updatea la que yo quiero.
>
> En effecto.
>
>
> Pero, si abres el archivo en lectura/escritura, en general el dato que
> quieres modificar va a cambiar de tamaño, asi que tienes que
> implementar una gestion del archivo más complicada, con indices, etc,
> o bien tienes que hacer lo que debes hacer con lo basico: abrir dos
> archivos, el antiguo en lectura, un nuevo en escritura, y copia del
> antiguo al nuevo hasta que encuentres el dato, y en lugar de escribir
> el dato, escribes el valor nuevo, y finalmente, terminas de copiar el
> antiguo archivo sobre el nuevo.
>
>
> Hay que acordarse que cuando el estandard Pascal fue escrito,
> basicamente se usaba solo bandas, asi que solo archivos sequenciales.
>
>
>
> Con FreePascal, puedes gdbm, lo que te permite acceder a un dato por
> una clave y cambiar lo por otro dato.  El codigo gdbm modifica el
> archivo automaticamente para adaptarse al tamaño del nuevo dato.
>
> Pero los archivos indexados en general son archivos binarios.  Si tu
> archivo debe ser un archivo texto, con líneas de longitudes
> diferentes, sin indice solo se puede usar el accesso sequencial.
>
> --
> __Pascal Bourguignon__                     http://www.informatimago.com/
>
> NOTE: The most fundamental particles in this product are held
> together by a "gluing" force about which little is currently known
> and whose adhesive power can therefore not be permanently
> guaranteed.

Mi pregunta es como se abre un fichero para escritura y lectura(me
podriais decir en codigo que necesitaria).
Re: URGENTE..PASCAL
#654
Author: Pascal Bourguignon
Date: Sat, 20 Jan 2007 16:35
67 lines
3658 bytes
"lqf" <abcdefghijoseantonio@hotmail.com> writes:

> Mi pregunta es como se abre un fichero para escritura y lectura(me
> podriais decir en codigo que necesitaria).

�No lo s�!  Hace demasiado tiempo que no uso m�s pascal.

Veamos, somos en es.comp.os.LINUX.programaci�n, entonces voy a suponer
que usas free pascal, que jamas has mencionado que compilador usas.

Luego vamos a: http://www.google.com/ 
y tecleamos: free pascal open file read write

Vemos en tercer lugar, "Free Pascal: Reference guide."
Hagamos clic en el.
Buscamos file en la p�gina.
el primiero es File types, saltamosle.
el segundo es File handling, hagamos clic en el.
Leemos que hay una funcion Append para abrir en escritura (a�aniendo),
Reset y Rewrite para abrir en lectura o escritura.

Asi que parece que en la unit system de free pascal, hay solamente las
funciones standard, permitiendo abrir un archivo en una sola
dirrecci�n.


Veamos la documentaci�n del sitio http://www.freepascal.org/
Hagamos clic en Documentation.

Hagamos clic en Standard units reference manual (en el aparte HTML).

No hay unit para los archivos, pero vemos una unit Linux.  Hagamos
clic en ella.

Vemos que Linux esta repartida ahora en unix, baseunix y
unixutil. Buscamos en unix primiero (haga clic en unix).

Hagamos clic en Procedures and functions.  No vemos open, asi que debe
estar en un otra unit.  Hagamos clic en el buton para volver a la
p�gina precedente dos veces, y hagamos clic en baseunix.

Hagamos clic en Procedures and functions.  

Ahora vemos una funci�n  FpOpen.  Hagamos clic en FpOpen.

Vemos que se puede usar:

use unixbase;
var fd:cInt;
begin
  fd=FpOpen("/tmp/some-file",O_RdWr,438(*(decimal) = 666(octal) *));
end;

para abri un archivo unix en modo lectura-escritura.

Luego habra que buscar funciones para posicionarse en el archivo, y
leer y escribir bloques.  Si haces clic en Procedures and functions,
encuentraras otras funciones interesantes como FpLseek y FpRead y
FpWrite, etc.


-- 
__Pascal Bourguignon__                     http://www.informatimago.com/

CONSUMER NOTICE: Because of the "uncertainty principle," it is
impossible for the consumer to simultaneously know both the precise
location and velocity of this product.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads