• Sábado 30 de Mayo de 2020, 22:11

Autor Tema:  Preguntar Nombre Para Crear Un Archivo  (Leído 2053 veces)

pere

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Preguntar Nombre Para Crear Un Archivo
« en: Lunes 25 de Diciembre de 2006, 22:33 »
0
Mi problema esta vez es que quiero crear un archivo txt pero quiero ponerle yo el nombre directamente.
He creado una variable string para guardar un nombre en concreto, pero no se como asignársela al archivo para que éste se cree con el nombre de la variable string.

Podríais ayudarme? Ya he mirado en el buscador y no he encontrado nada que me ayudara pero sí otras cosas como el IOResult ('imprescindible en el hogar' jeje).

_.B._

  • Miembro activo
  • **
  • Mensajes: 88
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #1 en: Lunes 25 de Diciembre de 2006, 23:27 »
0
¡Saludos Pere!

Igual que para crear cualquier archivo, 'assign' recibe una dadena de caracteres como segundo parámetro, la cual puede ser cualquier variable.

Código: Text
  1. var
  2.     archivo : TEXT;
  3.     nombre : string;
  4.  
  5. ...
  6.  
  7. assign(archivo, nombre);
  8.  

¡A programar! :comp:
¡Olmo, dame peras!
www.BernardoLG.net

pere

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #2 en: Martes 26 de Diciembre de 2006, 00:36 »
0
Gracias .B. pero...

Pues no me sale...
debería ser algo así:


 program cambiar_nombre;
var
archivo: text;
nombre: string;
begin
writeln ('dame nombre');
readln (nombre);
assign (archivo,'C:\xxx.txt');
assign (archivo, nombre);
rewrite (archivo);
close (archivo);
end.

sin la linea /assign (archivo, nombre);/ me he dado cuenta de que crea el archivo xxx pero con ella no me crea ni con el nombre xxx.txt ni con el que guardo en la variable nombre o sea no me crea nada 'jo¡¡¡ que lío'.
que es lo que está pasando? y como lo puedo solucionar?

Saiyan1

  • Miembro activo
  • **
  • Mensajes: 54
    • Ver Perfil
    • http://www.anaprog.com.ar
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #3 en: Martes 26 de Diciembre de 2006, 12:15 »
0
Código: Text
  1. archivo: text;
  2. nombre: string;
  3.  
  4. Begin
  5. Write('Dame nombre: ');
  6. Readln(nombre);
  7.  
  8. nombre:='C:\' + nombre +'.txt');
  9.  
  10. assign(archivo,nombre);
  11.  
  12. Rewrite(archivo); {y comproba todo con los IOResult}
  13. close(archivo);
  14.  

fijate si te soluciona lo que pedis..
----------------------
Gustavo Insaurralde
Foro de Analista Programador

pere

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #4 en: Martes 26 de Diciembre de 2006, 14:55 »
0
Gracias a los dos por contestar, la verdad saiyan es que esa manera tambien la había probado pero sin concatenar y por consiguiente 'el error'. :P

Nunca me acostaré sin saber una cosa mas muchas gracias por eso.

Saiyan1

  • Miembro activo
  • **
  • Mensajes: 54
    • Ver Perfil
    • http://www.anaprog.com.ar
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #5 en: Martes 26 de Diciembre de 2006, 19:09 »
0
me parece muy buena la actitud.

si.. despues tambien fijate la funcion "GETDIR"... que se la puede usar para esto o el renombre de archivos...

nos vemos che, saludos!
----------------------
Gustavo Insaurralde
Foro de Analista Programador

pere

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #6 en: Viernes 29 de Diciembre de 2006, 00:28 »
0
Es otra preguntilla mas, que la pongo aquí para no abrir demasiadas discusiones.

vereis es que he creado un array en los cuales he depositado unos número y ahora yo quisiera sumar todos esos números, lo hago accediendo a cada uno de ellos por separado y luego los sumo, igualandolos a otra variable.
Ejemplo:
Código: Text
  1. suma {variable} := goles[1]+goles[2]+....
  2.  
Hasta ahí bien pero  se pueden sumar todos de golpe sin tener que acceder uno por uno al array? estoy casi seguro de que se puede hacer pero no se como por mas vueltas que le doy.

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #7 en: Viernes 29 de Diciembre de 2006, 00:59 »
0
y si realizas un for???  :scream:

pere

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #8 en: Viernes 29 de Diciembre de 2006, 01:25 »
0
Bien lo del for lo he pensado pero tengo el siguiente inconveniente.
bajo mi enterder se haría así

Código: Text
  1. type
  2. golitos = array [1..3] of integer;
  3. var goles:golitos; suma:integer;
  4. begin
  5. for suma := golitos[1] to golitos[3] do; {así leo todo el array creo}
  6.  

pero me falta la suma y no se me ocurre nada jo.

yo lo hago de la siguiente manera:

Código: Text
  1. type
  2. golitos:=array [1..3] of integer;
  3. var
  4. goles:golitos;
  5. suma: integer;
  6. begin
  7. suma:=goles[1]+goles[2]+...;
  8. writeln (goles);
  9. end;
  10.  

así si que me los suma pero entiendo que es una manera erronea porque si el array tiene 30 posiciones me volvería loco

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #9 en: Viernes 29 de Diciembre de 2006, 05:48 »
0
si solo tienes 3 elemento de tu array porque no solo hacer
i: integer;
.
.
.
for i=1 to 3 do
begin
suma := golitos;
end;

PD ya no me acuerdo absolutamente nada de pascal, pero creo que es así :) lo peor que no tengo un compiler a la mano, pero pruebalo ;)

pere

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #10 en: Viernes 29 de Diciembre de 2006, 12:03 »
0
jejeje el problema es que la array no solo tiene tres elementos tiene unos cuantos mas ....  ,eso era un ejemplo,seguiré probando  :comp: .

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #11 en: Viernes 29 de Diciembre de 2006, 22:37 »
0
Cita de: "pere"
jejeje el problema es que la array no solo tiene tres elementos tiene unos cuantos mas ....  ,eso era un ejemplo,seguiré probando  :comp: .
y porque no simplemente realizas el ciclo hacia la cantidad de elementos de tu array :huh:  :scream:

pere

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #12 en: Sábado 30 de Diciembre de 2006, 10:47 »
0
jeje es precisamente eso lo que no se hacer. La verdad es que llevo poco tiempo en esto y aun me falta mucho, pero mucho mucho.
Pero bueno al final lo he hecho "a mi manera" y lo mas importante funciona  :P
Eso no quiere decir que no vaya a investigar como se hace, cuando tenga tiempo lo probaré de hacer con un pequeño programa a ver si me sale. Gracias de todas formas.

Una cosa mas si alguien pudiera echarle un vistazo al codigo para corregir y simplificar lineas le estaría muy agradecido ya que no tengo a nadie a quien preguntarle excepto a vosotros. Es mi primer programa y seguro que está hecho un patatal (aunque funciona jeje).

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #13 en: Sábado 30 de Diciembre de 2006, 14:45 »
0
En pascal tienes las funciones Low y High que devuelven el indice del menor y mayor elemento de un array.
Citar
Si necesita trabajar en un vector, puede siempre comprobar cuáles son sus límites, utilizando las funciones normalizadas Low y High, que devuelven los límites inferior y superior. Le recomiendo encarecidamente utilizar Low y High al operar sobre un vector, especialmente en bucles, ya que hace al código independiente del rango de la matriz. Más tarde, podrá cambiar el rango declarado de los índices del vector, y el código que use Low y High seguirá funcionando. Si escribe usted un bucle fijando el rango de un vector, tendrá que actualizar el código del bucle cuando cambie el tamaño del vector. Low y High hacen su código más fácil de mantener y más fiable.

Nota: Por cierto, no se produce un aumento en el gasto de recursos durante la ejecución por usar Low y High con vectores. Son convertidos durante la compilación en expresiones constantes, no en llamadas a funciones. Esta conversión de expresiones y llamadas a funciones durante la compilación también ocurre con muchas otras funciones simples de sistema.
Nunca lo use, pero supongo que debe ser algo asi:
Código: Text
  1.  
  2. for i:=Low(MyArray) to High(MyArray) do
  3.   MyArray[i] := i;
  4.  
  5.  

Y respecto de sumar los goles...... es tan facil como
Código: Text
  1.  
  2. var
  3.   Goles: arrray[1..3] of Integer;
  4.   Suma: Integer;
  5.   I: Integer;
  6. begin
  7.   for I:=1 to 3 do
  8.      Suma := Suma + Goles[I];
  9. end;
  10.  
  11.  

pere

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #14 en: Sábado 30 de Diciembre de 2006, 19:24 »
0
gracias por aclararme la duda enko.
He probado tambien con las funciones low y high pero me ha salido un error y me ha cerrado el compilador, a saber...

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #15 en: Sábado 30 de Diciembre de 2006, 19:27 »
0
tal vez si mostraras tu código?

pere

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Preguntar Nombre Para Crear Un Archivo
« Respuesta #16 en: Sábado 30 de Diciembre de 2006, 19:47 »
0
me da un poco de verguenza jeje pero tened en cuenta que estoy empezando eh? :lol:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.