Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-10-2013
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Error con longitud de cadena

Hola, espero que podais ayudarme ya sé que parece una tonteria pero nada mas ver el resultado me ha dejado KO, a ver estoy usando la ventana por defecto de windows para mostrar directorios junto a unidades de red etc, el problema es que tengo este código que uso para hacer ciertas comprobaciones antes de usar un if.

Código Delphi [-]
label9.Caption:= IntToStr(length(tempPath));

Donde TempPath puede ser desde "C:\" hasta "C:\windows\system32\..." bien, si fuera solo la raiz del sistema, es decir "C:\" la longitud que deberia devolverme seria de 3, ¿entonces por que me devuelve 261 como la longitud de tempPath? Igual tiene su respuesta pero se me escapa, yo cuento 3 caracteres, la C, los : y la barra, ¿entonces?

Saludos y gracias.

Edito: Le he encontrado una solución o más bien un parche, en lugar de hacer la comparación con la longitud de TempPath, la hago con una etiqueta que almacena la cadena tempPath y a partir de la longitud de esta etiqueta, ya puedo realizar correctamente el if.

Saludos.

Última edición por danielmj fecha: 16-10-2013 a las 23:05:00. Razón: Le he encontrado una solución
Responder Con Cita
  #2  
Antiguo 16-10-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola danielmj.

La questión es: ¿ De que tipo es tempPath ?

Si tempPath es de tipo string la función Length devolverá la longitud esperada, como por ejemplo en:
Código Delphi [-]
var
  tempPath: string;
begin
  tempPath := 'C:\';
  ShowMessage(IntToStr(tempPath)); // 3;
  ...

Pero intuyo que tempPath está declarada como array[0..260] of char... Y en ese caso tendrías que hacer:
Código Delphi [-]
var
  tempPath: array [0..260] of char;
  str : string;
begin
  tempPath := 'C:\';
  str := tempPath;
  ShowMessage(Format('Largo de tempPath: %d %sLargo de str: %d',[Length(tempPath), #10, Length(str)]))
...


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 17-10-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Olvidé mencionar algo, también podes usar un moldeo de forma directa:
Código Delphi [-]
var
  tempPath: array [0..260] of char;
begin
  tempPath := 'C:\';
  ShowMessage(IntToStr(Length(string(tempPath)))); // 3

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 18-10-2013
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Hola ecfisa, perdon por tardar en contestar,

es cierto estaba declarado como array ya va bien, gracias!

Ahora seguiré con esto, no puedo cogerlo todo el tiempo que quisiera, por eso voy a saltos con el codigo. un saludo
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
error: cadena clase no valida ritamarkarla Varios 4 10-05-2013 15:21:34
Funcion para borrar la cadena que aparesca repetida dentro de otra cadena flystar Varios 1 02-07-2007 23:51:10
Error al Tratar de Almacenar Cadena con Acepto inferno Firebird e Interbase 3 04-10-2006 17:17:40
Error Cadena truncada por la derecha??? Leogiro SQL 2 19-09-2004 17:38:57
Longitud de Cadena (en píxeles!!!) Jose_Pérez API de Windows 2 01-06-2003 13:28:00


La franja horaria es GMT +2. Ahora son las 03:22:31.


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