elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Remover primeros caracteres de una variable TCHAR
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Remover primeros caracteres de una variable TCHAR  (Leído 2,815 veces)
el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Remover primeros caracteres de una variable TCHAR
« en: 8 Diciembre 2014, 22:39 pm »

Hola no se si ya está este tema; bueno todavía me resulta difícil trabajar con este tipo de variable, cómo podría remover los primeros 4 caracteres de un tipo TCHAR.


En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Remover primeros caracteres de una variable TCHAR
« Respuesta #1 en: 8 Diciembre 2014, 23:25 pm »

Hola no se si ya está este tema; bueno todavía me resulta difícil trabajar con este tipo de variable, cómo podría remover los primeros 4 caracteres de un tipo TCHAR.
TCHAR no puede ser de 4 bytes, como maximo de 2 (unicode).

TCHAR MSDN:
http://msdn.microsoft.com/en-us/library/office/cc842072%28v=office.15%29.aspx


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Remover primeros caracteres de una variable TCHAR
« Respuesta #2 en: 8 Diciembre 2014, 23:41 pm »

TCHAR no puede ser de 4 bytes, como maximo de 2 (unicode).

TCHAR MSDN:
http://msdn.microsoft.com/en-us/library/office/cc842072%28v=office.15%29.aspx

No entiendo x64Core, ¿dónde dice el_doctor que sea de cuatro bytes? , creo que leiste mal , pone 4 caracteres, o yo ando muy perdido en esto :(


Hola no se si ya está este tema; bueno todavía me resulta difícil trabajar con este tipo de variable, cómo podría remover los primeros 4 caracteres de un tipo TCHAR.

El tipo TCHAR es solo un typedef de char en las plataformas  ANSI y DBCS, así que trabaja como ese tipo. Para quitar N caracteres simplemente copia los que quedarían si los eliminases en las primeras posiciones, es decir:

HOLA
LA
LALA
LA'\0'A

Es decir debes copiar en la primera posición el caracter que está N posiciones más delante mientras no supere el tamaño de la cadena, si no te dará un error de violación de acceso a la memoria. Una vez hecho eso debes terminar la cadena nueva en un caracter nulo, para ello al eliminar N caracteres, el caracter nulo estará ahora en el largo de la original menos los N caracteres eliminados, un ejemplo para dos caracteres sería (te toca a ti ponerlo como TCHAR):

Código
  1. char cadena [] = "hola que tal";
  2.  
  3. // Desde i = 0 hasfta que 2 + i no sea el largo de la cadena.
  4.  
  5. for(int i = 0; 2 + i < strlen(cadena); ++i)
  6. {
  7.  // Va copiando en la posicion i , lo que hay dos posiciones mas adelante
  8.  // pues queremos eliminar dos caracteres.
  9.  cadena[i] = cadena[2+i];
  10. }
  11.  
  12. // Al eliminar dos caracteres, el fin de cadena debe quedar en el largo de la
  13. // cadena menos los dos caracteres que hemos eliminado.
  14. cadena[12-2] = '\0';
« Última modificación: 9 Diciembre 2014, 00:26 am por Eternal Idol » En línea

Regístrate en
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Remover primeros caracteres de una variable TCHAR
« Respuesta #3 en: 8 Diciembre 2014, 23:51 pm »

No entiendo x64Core, ¿dónde dice el_doctor que sea de cuatro bytes? , creo que leiste mal , pone 4 caracteres, o yo ando muy perdido en esto :(
En el enlace que deje dice que TCHAR puede ser un ANSI o UNICODE. eso facilita cuando uno quiere compilar, no hay necesidad de cambiar todas las cadenas de la aplicación a unicode o viceversa.

Ahora acerca de la pregunta principal, el usuario dijo que tiene una variable de tipo TCHAR no un array asi que si el se referia a una cadena
entonces la pregunta está mal formulada.

-

Acerca de los bytes eso depende de la plataforma cierto, solamente tome en cuenta lo más comun.



Ahhh ya te entendí, cierto, pero no sé se intuye que si dice de 4 caracteres será un array ¿no?

Un saludo.
Sí, lo más probable.
« Última modificación: 9 Diciembre 2014, 00:27 am por Eternal Idol » En línea

el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Remover primeros caracteres de una variable TCHAR
« Respuesta #4 en: 9 Diciembre 2014, 16:37 pm »

hola, gracias por la explicación y si la pregunta no la detalle lo suficiente mis disculpas; pero la intuición de avesudra era correcta, estoy modificando el valor de salida de la función GetModuleFileNameEx y es un tipo TCHAR; gracias por su explicación...
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Remover primeros caracteres de una variable TCHAR
« Respuesta #5 en: 9 Diciembre 2014, 16:43 pm »

En realidad GetModuleFileNameEx no existe mas que como una macro que resuelve a GetModuleFileNameExA y GetModuleFileNameExW dependiendo de si el proyecto esta configurado para ANSI o Unicode.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines