Pasar variables de una página a otra

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Buenas tardes a todos. Este es mi primer post en el foro y me gustaria que me pudierais ayudar.
Mi duda es la siguiente(asunto jeje):

Estoy haciendo un instalador de un programa y me gustaria pasar una variable de una página a otra. La variable en concreto es el texto de un "Input" que quiero pasarlo a la otra página(seria la ruta de la instalación, el cual utilizaria para instalar el programa en ese directorio).

Si me pudireran ayudar os lo agredeceria.

Gracias de antemano de todas formas.
Es tan facil como declarar una variable con el contenido del imput en On close de la primera pagina y luego ya lo puedesd usar en la pagina siguiente , por ejem:

On Close d ela pagina 1:
strpath = Input.GetText("Input1");
On show de la pagina sigiente utiliza strpath
Input.SetText("Input1",strpath)
Hola buenas tardes. Te agradezco la respuesta rafaxplayer, pero la primera página no se cierra, entonces no le pasaria la variable. He puesto un boton de "Dialog.FolderBrowse" para que el usuario coja la carpeta que quiera y luego se lo pasa al "Input". Pero cuando pasa a la siguiente página(en este caso es un "Dialog") se queda con lo que habia puesto yo por defecto en el "Input".
Como lo tendria que hacer?
Gracias
Bueno es lo mismo tu declara una variable con el contenido del input , abres dialogo, y utilizas variable como quieras por ejem:

on click de un boton:
str=Input.GetText("Input1");
DialogEx.Show("Dialog1", true, nil, nil);
On preload del dialogex:
Input.SetText("Input1", str);
Gracias rafaxplayer, lo hice como me dijiste tu, en el "On click" de un botón y en el "On preload" del Dialog y así si me funciono. Ahora va perfecto eso.
Por cierto, en mi programa/instalador he puesto un "label" que me coje el espacio disponible del disco duro(con Drive.GetFreeSpace), pero me sale en MB, yo lo divido entre 1024 y me sale en GB. Pero.... me salen 5 o 6 decimales. Como podria quitar unos cuantos y dejar solo 1 o 2 o quitarlos todos?
Gracias
Utilza la funcion Math.Floor te redondea a la baja el numero decimal.
Estuve viendo esa opción en el programa, pero como ya me iba no lo pude probar. Lo probare en cuanto pueda. Gracias

Otra cosa(lo siento si pregunto tanto). Me descargue de amsfiles esto "SELECTOR_INSTALLER(PROGRESS_BAR).apz", para que las "Progress" se fueran completando conforme se va copiando el archivo, pero cuando el archivo es copiado(solo he probado con un rar), y lo abro este me manda un error de "final inerperado del archivo". Eso a que puede deberse?

Gracias de antemano.
puede deberse a muchas cosas , habría que ver como has editado el script.
Maybe if there was an example of .apz maybe I was able to provide helping :)
Perdon si no me he explicado bien:

Yo me descargé ese archivo de amsfiles y lo probé para ver si funcionaba bien. Vi que el "Progress" si subia conforme iba copiando. Al ver eso me dije: "Ahora ya tengo el codigo para hacer que el "Progress" suba en el copiado del archivo, ahora solo tengo que hacer el instalador". Pensado y hecho. Me pusé a crearlo, con sus dudas que me habeis resuelto aquí, y todo bien. Hasta que al copiar un archivo de prueba desde mi programa, vi que cuando lo abria(en este caso un rar) me decía un error: "final inesperado del archivo". El tamaño total del archivo copiado no llegaba al tamaño del archivo original. Sin embargo, si hago un boton y de codigo pongo que copie ese archivo me lo copia perfectamente y lo abro sin problemas.
En cuanto al archivo que me bajé de amsfiles también ocurre lo mismo(no es que haya modificado nada del script en mi programa, copy & paste) que cuando copia el archivo y lo abro me da el mismo error. Este ejemplo tiene una página y un "dialog". En el show del dialog esta el File.Copy(.., .., .., .., .., .., funcion_callback), un if(si el copied==total, que salga un mensaje sino return true) y luego pone el progress a 0 i sale del dialog(os pongo el codigo por sino os aclarais):
copia = File.Copy("AutoPlay\\Docs\\archivo.rar", directorio, false, true, true, false, PartialProgress)
			if Copied == Total then
				result = Dialog.Message("Informacion", "Instalado correctamente", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
			else
				return true;
			end

Progress.SetCurrentPos("Progress1", 0);
DialogEx.Close(0);
El codigo es de mi programa, pero es practicamente lo mismo, solo que sin checkbox.
El destino(directorio) es una variable que cojo desde otra pagina(visto en este tema).

Ahora viene lo importante y donde esta el problema(o eso creo yo), y es en la funcion_callback que he puesto en el codigo. En "Global Functions" sale la funcion creada y varias lineas más para el tema de las barras de progreso. Aqui va el código:
function PartialProgress(Source, Destination, Copied, Total, FileCopied, FileTotal)

		-- Set the file name
			SplitDest = String.SplitPath(Destination);
			soloExt = SplitDest.Extension
			soloFile = SplitDest.Filename;
			soloFolder = SplitDest.Folder;
			soloDrive = SplitDest.Drive;
			stConcat = String.Concat(soloDrive, soloFolder);
		
			if (Source ~= "") then
			Label.SetText("Label1", "Copiando archivo "..String.Mid(Source, String.Length(_SourceFolder) +1, -1));

			end
			
			-- Update progress1
			Progress.SetCurrentPos("Progress2", ((Copied / Total) * 100))
			nPercentage = Math.Floor((Copied / Total) * 100);
			Progress.SetText("Progress2", "Estado general del copiado al (" .. nPercentage .. "%)...");
			Label.SetText("Label2", "A carpeta "..stConcat);


			-- Update progress2
			CurrentPGR = Progress.GetCurrentPos("Progress1");
			-- (CurrentPGR-1)*100 + CurrentPGR
			-- 100*(Copied/Total)
			nTotalPercentage = Math.Floor((Copied / Total) * 100);
			Progress.SetCurrentPos("Progress1", nTotalPercentage);
			
			splittedPath = String.SplitPath(Source);
			solofile = splittedPath.Filename;
			
			SetString =  "Copiando archivo "..solofile.." "..nTotalPercentage .." %";
			Progress.SetText("Progress1", SetString);

			
	
	
		
		if Copied == Total then
		Progress.SetText("Progress1", "Terminado!");
		Label.SetText("L_Status1", "Copia Terminada!");
		Progress.SetText("Progress2", "Copia terminada!");
		return false;
		else
		return true;
		end
end
Gracias a los dos por responder tan pronto y disculpas por mi tardía respuesta.
Copied is table so


if Table.Count(Copied) == Total then
[/color]

:)
Buenos dias/tardes, ayer lo solucioné pero no me acordé de postearlo. En el segundo código, en el último if:
if Copied == Total then
                 Progress.SetText("Progress1", "Terminado!");
                 Label.SetText("L_Status1", "Copia Terminada!");
                 Progress.SetText("Progress2", "Copia terminada!");
                 -- return false;
                 else
                 return true;
                 end
El "return false;" sobra, ya que en el on show del dialog también está el mismo if y ese no tiene eso, así que lo quité y funcionó. Por cierto, me prodriais explicar eso del return?

Gracias abood1987 por la respuesta. Voy a probar eso a ver si también funciona.

Otra cosa(espero que sea la última) mientras se copia un archivo, como puedo cancelar el copiado?

Gracias a todos de antemano.
mediante la funcion callback del filecopy

HIDE: ON
Hidebb Message Hidden Description
Perdon por el retraso en la respuesta, pero es que no he podido responder por problemas de conexión.
En cuanto al botón cancelar, no me ha funcionado, ya que yo quiero poner un "Button" en el "Dialog" el cual cancele el copiado y no un "Statusdialog" con su boton cancel predetermiado.
El boton del dialog deberia cancelar el proceso de copiado, pero no se como hacerlo.

Gracias
es lo mismo en el boton al clickar se declara cancel=true;
Pero tengo que poner algo en "Global Functions"? O lo tengo que poner en el boton de cancelar? Porque no sé donde ponerlo

Gracias
:yes:
rafaxplayer escribió:mediante la funcion callback del filecopy

Este mensaje esta oculto

:pc: :pc:

Observando

thanks