Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-05-2005
Luli Luli is offline
Miembro
 
Registrado: oct 2004
Posts: 76
Poder: 23
Luli Va por buen camino
Lightbulb Corrección

Hola, mil disculpas, es que cuando vi lo que escribí me di cuenta de un error en el codigo, esa no es la parte en donde me da el error, es aqui:

Código PHP:
(if cadena[i]='"') then begin
     i
:=i+1;
     while(
cadena[i]<>'"') do begin
 
        guarda_variable
[j]:= cadena[i]; //linea donde esta mi duda
        
j:=j+1;
        
i:=i+1;
     
end;
    
end; 
siendo cadena y guarda_variable de tipo string... gracias
Responder Con Cita
  #2  
Antiguo 14-05-2005
Elfoscuro Elfoscuro is offline
Miembro
 
Registrado: mar 2005
Posts: 59
Poder: 22
Elfoscuro Va por buen camino
Lo primero deberías de poner los límites del bucle para que veamos por donde te mueves. Yo para los strings te aconsejo que controles el tope " length (variable)-1", ya que si la cadena mide 10 char y te vas a mirar el 11 te dará error. En un bucle for, para recorrer la cadena usa:

Código Delphi [-]
for f:=0 to length(cadena)-1 do
begin
end;
Otra cosa. No le pongas límite a la cadena. Declaralá como:

Código Delphi [-]
var cadena:string;

y no como

Código Delphi [-]
var cadena: string[30];

Piensa en las string como en lo que son, arrays dinámicos.

Más cosas. La línea:

Código Delphi [-]
guarda_variable[j]:= cadena[i]; 

la verdad, me da yuyu. Pienso que sería mejor así:

Código Delphi [-]
guarda_variable:=guarda_variable+cadena[i]; 

Antes del bucle inicializaría a '' la variable guarda_variable y pasaría de la variable j. Ten en cuenta que según tú lo haces, si la cadena mide 0 caracteres, en el primer paso del bucle while ya estás intentando llegar al caracter 1, con lo que peta.

Veo que no estás controlando la salida del bucle para cuando llegues a fin de cadena. Sobre todo, mirate ésto y lo anterior, que me parece que es donde te está petando.

Un consejo "cutre" pero funcional. Si no ves mentalmente lo que está pasando, haz lo que hago yo. Pon la siguiente línea dentro del while:

Código Delphi [-]
showmessage(inttostr(i)+' '+guarda_variable+' '+cadena[i]);

Te lo puedes decorar a tu gusto, pero así consigues ver en cada paso el valor de cada variable. A mi me ayuda mucho, y la verdad, me resulta más cómodo que el depurador.

Saludos del elfo
Responder Con Cita
  #3  
Antiguo 14-05-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo creo que el problema es lo que te mencioné antes. Tienes que cuidar los rangos de los índices. En el ciclo while los índices i, j van aumentando siempre sin que verifiques si ya te pasaste de la longitud de la cadena. Por ejemplo, si encuentra la doble comilla al final de la cadena en la comparación antes del ciclo entonces ya no puedes acceder al siguiente caracter. O si en el ciclo el primer caracter distinto de doble comilla es el último de la cadena también vas a tener problemas.

// Saludos
Responder Con Cita
  #4  
Antiguo 15-05-2005
Luli Luli is offline
Miembro
 
Registrado: oct 2004
Posts: 76
Poder: 23
Luli Va por buen camino
Hola, muchas gracias por responder mis preguntas, tomaré en cuenta todas las sugerencias y los ejemplos, seguramente me serán de utilidad, nos vemos pronto por aqui...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:52:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi