hola buenas soy nuevo en este lenguaje y estoy buscando como recorrer una cadena con un for
pero no encuentro como hacerlo y como acceder desde un indicie
por ejemplo no se como hacer esto en gambas
for (i=0; i< strlen(cad);i++){
printf("%d", cad[i]);
}
como se traduce esto a gambas???
gracias
Como Leer Una Cadena Con For?
Objetivo: Re: Como Leer Una Cadena Con For?
En gambas las cadenas de caracteres no se tratan como arrays de tipo char, por lo que no puedes recorrerlas de ese modo.
Si lo que quieres hacer es mostrar por consola una cadena con un formato determinado deberías usar PRINT y la función Format. Si no es eso lo que querías, entonces explica que es lo que en realidad quieres hacer para que podamos ayudarte.
Si lo que quieres hacer es mostrar por consola una cadena con un formato determinado deberías usar PRINT y la función Format. Si no es eso lo que querías, entonces explica que es lo que en realidad quieres hacer para que podamos ayudarte.
Objetivo: Re: Como Leer Una Cadena Con For?
Hola
Lo que dice Fabian como de costumbre está muy bien, pero para responderte exactamente a lo que preguntas
La función mid extrae X caracteres de un string. Tu le dices de donde empezar y cuantos extraer
En este caso le digo que extraiga del string cad, a partir de la posición Contador un caracter. Si no pusiera el uno entonces extraería hasta el final
Un saludo
Lo que dice Fabian como de costumbre está muy bien, pero para responderte exactamente a lo que preguntas
Citar:
La función mid extrae X caracteres de un string. Tu le dices de donde empezar y cuantos extraer
En este caso le digo que extraiga del string cad, a partir de la posición Contador un caracter. Si no pusiera el uno entonces extraería hasta el final
Un saludo
Objetivo: Re: Como Leer Una Cadena Con For?
Vale soplo, pero eso es precisamente lo que quería evitar que se le ocurriera hacer al nuevo forista. Como no es posible recorrer la cadena como un array de caracteres, te ves obligado a simularlo usando la función mid(). Una de las diferencias radica, obviamente, en el rendimiento. Mientras que el tiempo de acceso a una posición de un array de caracteres equivale al tiempo de acceso a una posición de memoria (más o menos), al simularlo en gambas el tiempo de acceso se dispara (y depende de la longitud de la cadena) y eso puede ser importante según el tipo de programa que se esté desarrollando, pero en gambas resultará siempre en un desperdicio innecesario de recursos.
Una cuestión básica al comenzar con un lenguaje nuevo es aprender a escribir código "idiomático", es decir, a codificar aprovechando realmente las características del nuevo lenguaje, lo que hace que el código resultante tenga un estilo particular, diferente al de otros lenguajes.
Desde este punto de vista es válido decir que el código anterior no es código gambas (idiomático), sino una traducción literal de código C a gambas que, con gran probablidad, es menos eficiente que el código gambas idiomático equivalente y generalmente también será más difícil de comprender (aunque no sea tanto así en este caso).
Hacer eso en gambas no tiene sentido (o al menos no lo tendrá en la mayoría de las circunstancias posibles). Si quisiera dividir la cadena según un patrón debería usar Split(), si quisiera extraer una porción de la cadena podría usar Left() - Mid() - Right(), si quisiera simplemente saber si la cadena contiene una subcadena determinada debería usar InStr(), etc.
soplo escribió: [Ver mensaje]
Vale soplo, pero eso es precisamente lo que quería evitar que se le ocurriera hacer al nuevo forista. Como no es posible recorrer la cadena como un array de caracteres, te ves obligado a simularlo usando la función mid(). Una de las diferencias radica, obviamente, en el rendimiento. Mientras que el tiempo de acceso a una posición de un array de caracteres equivale al tiempo de acceso a una posición de memoria (más o menos), al simularlo en gambas el tiempo de acceso se dispara (y depende de la longitud de la cadena) y eso puede ser importante según el tipo de programa que se esté desarrollando, pero en gambas resultará siempre en un desperdicio innecesario de recursos.
Una cuestión básica al comenzar con un lenguaje nuevo es aprender a escribir código "idiomático", es decir, a codificar aprovechando realmente las características del nuevo lenguaje, lo que hace que el código resultante tenga un estilo particular, diferente al de otros lenguajes.
Desde este punto de vista es válido decir que el código anterior no es código gambas (idiomático), sino una traducción literal de código C a gambas que, con gran probablidad, es menos eficiente que el código gambas idiomático equivalente y generalmente también será más difícil de comprender (aunque no sea tanto así en este caso).
Hacer eso en gambas no tiene sentido (o al menos no lo tendrá en la mayoría de las circunstancias posibles). Si quisiera dividir la cadena según un patrón debería usar Split(), si quisiera extraer una porción de la cadena podría usar Left() - Mid() - Right(), si quisiera simplemente saber si la cadena contiene una subcadena determinada debería usar InStr(), etc.
Objetivo: Re: Como Leer Una Cadena Con For?
hola muchas gracias por la respuesta, me ha sevido bien
el fin de esta duda era la siguiente, he hecho un programa el cuar corta archivos segun un tamaño dado usando el comando rar
y claro en un textbox hice salir las respuestas de la consola pero claro en ella salia 20% 21% etc... asi sucesivamente y queria capturar el 20 para pasarselo como parametro a la barra de progreso
y asi que funcionase de forma mas agradable al usuario final por cierto aunque no hay mucha informacion en la red sobre gambas veo k es muy util ya k para c no hay un entorno grafico y este es
lo mas sencillo k veo por el momento para ir aprendiendo a manejar objetos
el fin de esta duda era la siguiente, he hecho un programa el cuar corta archivos segun un tamaño dado usando el comando rar
y claro en un textbox hice salir las respuestas de la consola pero claro en ella salia 20% 21% etc... asi sucesivamente y queria capturar el 20 para pasarselo como parametro a la barra de progreso
y asi que funcionase de forma mas agradable al usuario final por cierto aunque no hay mucha informacion en la red sobre gambas veo k es muy util ya k para c no hay un entorno grafico y este es
lo mas sencillo k veo por el momento para ir aprendiendo a manejar objetos
Objetivo: Re: Como Leer Una Cadena Con For?
De acuerdo, pero si la salida de rar tiene un incremento constante (X + n, siendo n constante), ni siquiera necesitas capturar la salida. Simplemente utiliza el evento Read de Process para incrementar el valor que le pasas a ProgressBar.
FresyMetal escribió: [Ver mensaje]
De acuerdo, pero si la salida de rar tiene un incremento constante (X + n, siendo n constante), ni siquiera necesitas capturar la salida. Simplemente utiliza el evento Read de Process para incrementar el valor que le pasas a ProgressBar.
Objetivo: Re: Como Leer Una Cadena Con For?
mira esto es lo k tengo hecho por el momento, supongo k tendra algunos fallos o la forma no es correcta ya k mi campo es c y soy novato en gambas
resultado.Text = "rar a -v" & tam.Value & "m " & nuevonombre.Text & " " & rutafich.Text
entrada = resultado.Text
proc = SHELL (entrada) FOR READ WRITE
'PUBLIC SUB datos_read()
' DIM linea AS String
'READ #LAST, linea, -50
'PRINT linea
'resultado.Text = linea
END
PUBLIC SUB Process_Read()
DIM x AS Integer
DIM string AS String
READ #proc, salida, -256
Label3.Text = resultado.Text
sCad = resultado.Text
x = Left$(resultado.Text, 2)
pb.Value = x / 100
resultado.Text = salida
END
PUBLIC SUB Button3_Click()
IF proc.State = Process.Running
entrada = entrada & Chr$(10)
WRITE #proc, entrada
resultado.Text = resultado.Text & sCad
ENDIF
END
entrada = resultado.Text
proc = SHELL (entrada) FOR READ WRITE
'PUBLIC SUB datos_read()
' DIM linea AS String
'READ #LAST, linea, -50
'PRINT linea
'resultado.Text = linea
END
PUBLIC SUB Process_Read()
DIM x AS Integer
DIM string AS String
READ #proc, salida, -256
Label3.Text = resultado.Text
sCad = resultado.Text
x = Left$(resultado.Text, 2)
pb.Value = x / 100
resultado.Text = salida
END
PUBLIC SUB Button3_Click()
IF proc.State = Process.Running
entrada = entrada & Chr$(10)
WRITE #proc, entrada
resultado.Text = resultado.Text & sCad
ENDIF
END
Objetivo: Re: Como Leer Una Cadena Con For?
Por favor, no utilices abreviaturas SMS, no están permitidas en este Foro. Conviene leer las Normas antes de postear.
Saludos
FresyMetal escribió: [Ver mensaje]
Por favor, no utilices abreviaturas SMS, no están permitidas en este Foro. Conviene leer las Normas antes de postear.
Saludos
Objetivo: Re: Como Leer Una Cadena Con For?
vale entiendo, me acabo de leer las normas, y como todos también hay faltas de ortografía en las normas, no te lo tomes a mal pero fallos tenemos todos, yo con mis k y tu con los acentos
entiendo que las abreviaturas molestan cuando son continuadas pero las k es algo nimio hay que ser mas tolerante
un saludo
entiendo que las abreviaturas molestan cuando son continuadas pero las k es algo nimio hay que ser mas tolerante
un saludo
Objetivo: Re: Como Leer Una Cadena Con For?
He repasado la ortografía en las normas y no veo las faltas en los acentos que dices. Si eres tan amable, ¿podrías indicar dónde se encuentran esas faltas? Como bien dices, nadie es perfecto y me gustaría corregirlas.
Para ti serán algo nimio, pero ni siquiera figuran en el DRAE como tales [1]. Eso no es español. Por otra parte, yo (y la mayoría de los usuarios de esta comunidad) somos bastante tolerantes. Pero cuando te registraste en el foro, aceptaste implícitamente las Normas, por lo tanto si te hubieras limitado a acatarlas, creo que esta conversación no hubiera tenido lugar.
Y sí, reconozco que me molestan las k, q y ese tipo de "modernidades" sin ningún fundamento, porque dicen muy poco de la persona que lo escribe. Seré un antiguo o un maniático, pero es lo que hay. Y no me enfado, sólo que con lo fácil que es hacer las cosas bien, ¿por qué hacerlas sólo "medio bien"?
Saludos
Referencias:
[1] Abreviaturas en español.
FresyMetal escribió: [Ver mensaje]
He repasado la ortografía en las normas y no veo las faltas en los acentos que dices. Si eres tan amable, ¿podrías indicar dónde se encuentran esas faltas? Como bien dices, nadie es perfecto y me gustaría corregirlas.
Citar:
Para ti serán algo nimio, pero ni siquiera figuran en el DRAE como tales [1]. Eso no es español. Por otra parte, yo (y la mayoría de los usuarios de esta comunidad) somos bastante tolerantes. Pero cuando te registraste en el foro, aceptaste implícitamente las Normas, por lo tanto si te hubieras limitado a acatarlas, creo que esta conversación no hubiera tenido lugar.
Y sí, reconozco que me molestan las k, q y ese tipo de "modernidades" sin ningún fundamento, porque dicen muy poco de la persona que lo escribe. Seré un antiguo o un maniático, pero es lo que hay. Y no me enfado, sólo que con lo fácil que es hacer las cosas bien, ¿por qué hacerlas sólo "medio bien"?
Saludos
Referencias:
[1] Abreviaturas en español.
Página 1 de 2
No puede crear mensajesNo puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario
Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.
Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo
Página generada en:: 0.4991s (PHP: -79% SQL: 179%)
Consultas SQL: 44 - Debug off - GZIP Activado