C/Visual C - isalpha

 
Vista:

isalpha

Publicado por Edgar (3 intervenciones) el 02/06/2006 23:29:36
como hago cuando en c++ estoy pidiendo un dato numerico y el usuario pone una letra, el programa se vuelve loco, como soluciono eso, porque el profesor cada vez que le hago un programam me mete el dedo en el ojo con esa m..........
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:isalpha

Publicado por fernando.gomez (1603 intervenciones) el 03/06/2006 00:22:58
Yo usualmente lo que hago es derivar una clase de CEdit , capturar el mensaje WM_CHAR y en OnChar validar el texto ingresado. He aquí un pequeño ejemplo:

class CNumEdit : public CEdit
{
protected:
virtual void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);

DECLARE_MESSAGE_MAP();

public:
CNumEdit() {}
};

BEGIN_MESSAGE_MAP(CNumEdit, CEdit)
ON_WM_CHAR()
END_MESSAGE_MAP()

void CNumEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CString str;
TCHAR ch;

ch = nChar
GetWindowText(str);

if (!_istdigit(nChar)) {
MessageBox(_T("Sólo se permiten caracteres numéricos."), NULL, MB_ICONEXCLAMATION);
str = str.Mid(0, str.GetLength() - 1);
SetWindowText(str);
}
}

y ya en tu ventana, solo mandas a llamar al control vía DDX. Asumamos que en tu cuadro de diálogo (IDD_EJEMPLODLG), tienes una
caja de texto cuyo ID es IDC_TEXTONUMERICO. Entonces sólo tendrías que enlazarlo con CNumEdit vía DDX:

class CEjemploDlg : public CDialog
{
private:
CNumEdit m_objTxtNumerico;
enum { IDD = IDD_EJEMPLODLG; }

protected:
virtual void DoDataExchange(CDataExchange* pDX);

public:
CEjemploDlg(CWnd* pParent);
};

CEjemploDlg::CEjemploDlg(CWnd* pParent)
: CDialog(IDD, pParent)
{
}

void CEjemploDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_TEXTONUMERICO, m_objTxtNumerico);
}

Así, mandarías crear el diálogo en forma normalita; asumiendo que la creas desde algún metodo de una clase derivada de CWnd,

CEjemploDlg wndEj = this; // el constructor no es "explicit" :P
wndEj.DoModal();

En resumen, todo está en el manejo de OnChar. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:isalpha

Publicado por pako (1 intervención) el 03/06/2006 18:41:42
dispensen mi indiorancia pero, ¿hablan de c++ o de vc++?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:isalpha

Publicado por Juan (68 intervenciones) el 05/06/2006 13:39:29
Eso ultimo tiene pinta de VC++.
Yo lo que hacia en la uni, me imagino que estas usando cin para hacer la lectura, era leer mediante un scanf con un String, tenia una funcion ValidaEntero que recibia ese String y me indicaba si era un entero valido o no. Si lo era, lo casteaba, sino mandaba el mensaje de error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:isalpha

Publicado por fernando.gomez (1603 intervenciones) el 05/06/2006 19:57:19
El ejemplo es C++, usando la librería MFC. Visual C++ no es un lenguaje de programación, es un compilador.

Y no, en el ejemplo no uso cin ni scanf, empleo el bucle de mensajes de Windows -que lo esconde MFC.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:isalpha

Publicado por fernando.gomez (1603 intervenciones) el 05/06/2006 19:55:29
Lo dices como si VC++ fuese un lenguaje de programación... El ejemplo lo dí con C++...

Yo asumí -porque Edgar no mencionó algo al respecto- que estaba empleando MFC. En cualquier caso, creo que el manejo de isalpha queda claro. Ya si trabajas con consola, Win32, MFC, WTL, Qt o cualquier otra librería, el ejemplo sirve perfectamente mientras se trabaje con C/C++.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Visual C no es un lenguaje de programacion?

Publicado por Juan (68 intervenciones) el 06/06/2006 15:38:58
Ya va, Visual C no es un lenguaje de programacion????????????
Eso si me dejo lelo.......... Porque en la calle hay manuales de Visual C, no creo que saquen manuales de un compilador
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Visual C no es un lenguaje de programacion?

Publicado por fernando.gomez (1603 intervenciones) el 06/06/2006 17:14:33
Ni aquí ni en China es lenguaje de programación. Visual C++ es un IDE de desarrollo para el lenguaje de programación C++. Visual C++, aparte de incluir las librerías estándares de C y C++, contiene muchas otras librerías, como el SDK de Windows, Microsoft Foundation Classes -MFC-, API del Component Object Model, API de ODBC, la Active Template Library -ATL-, OLE -Object Linking Embedded, etcétera.

Hay libros que hacen referencia a Visual C++ -Inside Visual C++ es probablemente de los más famosos-, pero en el entendido de que te van a enseñar a emplear las librerías particulares como MFC, ATL o Win32. Pero de ninguna manera es un lenguaje nuevo; trabajar con Win32 es trabajar con C o C++ estándar, sólo que Win32 provée más de 5000 funciones para interactuar con el sistema operativo; además MFC y ATL es C++ estándar (i.e. ATL emplea templates).

Si tienen dudas, pueden consultar www.msdn.microsoft.com/visualc.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Visual C no es un lenguaje de programacion?

Publicado por Juan (68 intervenciones) el 06/06/2006 17:46:27
Guaoooo voy a chequear.... No me estoy burlando, en verdad creeme que me asombra porque me habian dicho todo lo contrario en la uni...... Que tal, en verdad voy a chequear y muchas gracias por el comentario
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Visual C no es un lenguaje de programacion?

Publicado por fernando.gomez (1603 intervenciones) el 06/06/2006 19:01:48
Para Visual C++ 7 y 8, se agregó un dialecto: CLI/C++, que sirve para interactuar con .NET Framework -código administrado.

Suerte, así le podrás dar un buen sape al que te haya dicho que VC es un lenguaje :P

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:isalpha

Publicado por Edgar (3 intervenciones) el 19/06/2006 01:21:01
Hermanos yo soy principiante solo conozco de cout cin for do while e isalpha que me lo mencionaron pero no se como hacer eso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:isalpha

Publicado por Edgar (3 intervenciones) el 19/06/2006 01:18:18
hablo de c++
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:isalpha

Publicado por Strato (6 intervenciones) el 06/06/2006 22:36:50
Con un fflush(stdin) no se vuelve loco, pero coge un valor numerico aleatorio :(, pero no se vuelve loco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar