PREGUNTAS CONTESTADAS - C/Visual C

 Hay un total de 745 Preguntas.<<  >> 

    Pregunta:  32356 - CAMBIO DE PASSWORD EN NT
Autor:  Juan Deza
Se puede implementar una dll que me permita cambiar un password de un usuario en NT sin necesidad de enviarle el password actual.?
Seria posible entrando como usuario Administrator y cambiar el password??
  Respuesta:  Facundo Noblega
Si, tenes que usar las funcion NetUserSetInfo( ) de la siquiente manera:

CStringW user;
CStringW pass;

USER_INFO_1003 ui;

ui.usri1003_password = (LPWSTR)pass.GetBuffer(pass.GetLength() );
nStatus = NetUserSetInfo( NULL, user, 1003, (LPBYTE)&ui, NULL);

if ( nStatus == 0 )
return 1; //resultado correcto
else
return 0; //resultado incorrecto llama a GetLastError()

espero que te sirva.

    Pregunta:  32412 - COMPILAR EN DEV-C++
Autor:  Fran
Hola. Mi pregunta es un poco basica.. pero es que soy un poco novato.. :) alla va:

Tengo el compilador dev-c++. Como podria compilar un programa que tengo fraccionado en varios archivos .c y varios .h??

gracias
  Respuesta:  Curro sin apellido
Pues si no meto la pata, puedes hacerlo así:

crea un nuevo proyecto; en el panel izquierdo haz click con el botón derecho del ratón sobre el nombre del proyecto y selecciona \"añadir unidad\"; de ese modo podrás incluir tus archivos .c

Por otro lado, para los archivos .h me imagino que con hacer un
#include \"ruta\\archivo.h\" será suficiente

No obstante, ten en cuenta que si utilizas nombres largos para tus archivos, o bien éstos se encuentran bajo una carpeta de nombre largo, es muy posible que el dev-c++ te dé errores,asi que ya sabes, utiliza archivos con nombres de menos de 8 caracteres y en directorios \"poco profundos\"

Un saludo.

    Pregunta:  32446 - CARGAR DLL'S EN C++ BUILDER
Autor:  Angel Serralan
Me gustaria que me indicaseis como puedo cargar una libreria (DLL) para poder utilizar sus funciones.
Estoy probando con "extern prototipo", pero me da un error externo y no se si es la libreria que está mal o que no se carga.
Un saludo y gracias por adelantado
  Respuesta:  Angel Serralan
Existen varias formas de utilizar las librerías en C++ Builder.
Si la librería es interna de, es decir tiene extensión .BPI o es estática .LIB tan solo hay que añadirla a la lista de librerías utilizadas por
nuestro proyecto en el menú Project->Options.
Luego tendremos que declarar el prototipo de la función en la cabecera del modulo implementado y utilizar las funciones declaradas en esta librería.
Por supuesto debemos conocer la estructura de la función o componente declarado en la librería.
Si por el contrario estamos hablando de funciones del API de windows tan solo habrá que saber la estructura de la función a utilizar y utilizarla.
Esta estructura está disponible casi siempre en Win32.hlp o en algún fichero de ayuda relacionado con Win32.
Existen librerías del API que están ya cargadas con lo cual sólo es necesario utilizar la función y otras que es necesario declarar el prototipo de la función en la cabecera, para poder utilizarla.
Estas declaraciones de prototipos son del tipo:
extern "C" __stdcall tipo_dato_devuelto Nombre_función ( ) ;
El tipo de convención de llamada depende si la función esta escrita en C++,
C o en cualquier otro lenguaje.(_ _stdcall, _ _fastcall, _ _pascal, _
_cdecl).

En caso de querer utilizar una librería (Dll\'s) externa, lo primero que tendremos que hacer es conocer la estructura de la función. Una vez conozcamos la estructura de la función tendremos que utilizar dos funciones del API de windows como son LoadLibrary( ) , para cargar la librería propiamente dicha, y GetProcAddress( ) para obtener la función a utilizar.
Una vez utilizada se deberá liberar la librería con FreeLibrary( ).
Para entenderlo os pongo un ejemplo.
1º- Declaramos en la cabecera del fichero implementado:
// Definimos un nuevo tipo de datos con un puntero al tipo de datos devuelto por la
// función a utilizar, y también los parámetros pasados a la función.
typedef int (*PROCEDIMIENTO)(LPSTR, int);
// Asignamos un nombre al procedimento
PROCEDIMIENTO Nombre_procedimiento;
// Cargamos la librería utilizando el manejador HINSTANCE.
HINSTANCE Nombre_deseado =:: LoadLibrary("Nombre_librería.dll");
// Luego asignamos al procedimiento declarado en la cabecera la función de
la librería que queremos utilizar.
Nombre_procedimiento = (PROCEDIMIENTO)::GetProcAddress(Nombre_deseado,"Nombre_función");
// A partir de aquí ya podemos utilizar la función a través de Nombre_procedimiento. //(Pasándole los parámetros correspondientes)
// Lo normal será asignar a un tipo de datos igual al devuelto por la función, a // Nombre_procedimiento(Parámetros), para poder evaluar los resultados obtenidos, ya // que normalmente la función devolverá algún dato para saber que se ha realizado la // operación con éxito o no.
int Dato_devuelto;
Dato_devuelto = Nombre_procedimento(parámetros de la función);
// Una vez utilizada la función será necesario liberar el espacio ocupado en memoria por // la librería cargada, para lo que habrá que utilizar
FreeLibrary( ).
::FreeLibrary(Nombre_deseado);

Este tema es bastante extenso por lo que me imagino que deben haber más formas de utilizar las librerías, además de crear nuevos componentes VCL, COM, etc.
Yo he probado varías formas de utilizarlas, como por ejemplo utilizar la declaración del prototipo, y luego intentar hacer que se cargue la librería utilizando Project->Options->Advanced Linkers->Dll's to delays load y no me ha funcionado, dandome casi siempre un error de proceso de la librería.
También cargando la librería manualmente en el fichero Options-Source en el apartado indicado como <ALLLIB>, pero tampoco me ha funcionado dándome
errores en el linkado del tipo Unresolved-external error .
Así que buscando encontré la forma explicada y con esta funciona correctamente, sólo es necesario conocer bien la estructura de la función.
Os pongo una referencia que de una página que a mí me ayudo bastante y que por lo que he ojeado me parece que está bastante bien.
http://www.zator.com/Cpp/E1_4_htm#librería
Espero que sea de vuestra ayuda, y que si alguien encuentra otra forma me la comuniqueis.
Gracias y un saludo.

    Pregunta:  32494 - ERROR EN VC++ 6
Autor:  Marco Leon Mora
En VC++ 6, en el archivo "MyAppView.h" totalmente generado por el asistente, tengo el siguiente bloque de codigo:
....
protected: //create from serializacion only
CMyAppView()
DECLARE_DYNCREATE(CMyAppView)
//Atributes
public:
CMyAppDoc* GetDocument();
......
Al compilar sale el siguiente error en la última instrucción:
error c2143: syntax error: missing ';' before '*'

No encuentro la causa del error, Puede alguien ayudarme...
  Respuesta:  pepito
Mira en qué archivo CPP está incluyendo el header, que es el que está compilando en este momento. Antes del #include "MyAppView.h" tiene que haber in #include "MyAppDoc.h" o algún otro include que lo haga, el error que te está dando es que no está definida la clase CMyAppDoc, que estará definida en MyAppDoc.h....

Salu2

    Pregunta:  32507 - REDIMENSIONAR ARRAYS DINAMICAMENTE EN C(NO EN C++)
Autor:  Jose Ramon Lagos Granados
Necesito crear un array que tenga como dimension la introducida por el usuario,y luego ir asignando valores a cada posicion tambien de manera dinamica,se deberia usar el malloc,pero no consigo hacerlo, necesito algo como el new de C++,pero esta funcion no se puede usar en C.
Muchas Gracias.
  Respuesta:  Juan Carlos Ruiz Pacheco
Aqui te adjunto un archivo sobre redimensionar arrays en C
Descargar

    Pregunta:  32541 - GRAFICAR ECUACION EN C++
Autor:  ubaldo lopez olivares
tengo que graficar una ecuacion en c++

la ecuacion es la siguiente S^2+(R/L)S+1/LC
L=10mH(milihenrios)
R=esta entre 10 omnhios y 10 megaomnhios
C=esta entre 0,022 microfaradios y 47 microfaradios

Por favor les agradezco toda la ayuda posible para resolver este ejercicio.

Gracias
Chao
  Respuesta:  Víctor Barrera Figueroa
Esa ecuación seguramente es sobre un circuito RLC analizado en el dominio de la frecuencia compleja s=sigma+jomega donde sigma es el decaimiento de la señal y omega es la frecuencia angular de la señal.Como tu variable independiente es de tipo complejo (paret real+jparte imaginaria), tienes que decidirte que cosa quieres graficar. Aqui tienes de tres sopas:
1. Graficar la parte real de la función. Sustituyes s=sigma+jomega en tu ecuación a graficar en todos los lugares donde tengas s. después desarrolla todo lo que tengas que desarrollar y expresa lo obtenido en forma de un número complejo: a+jb. Donde a es la parte real y b la parte imaginaria. Ahora toma la parte real (que queda en términos de sigma) y grafica esta función en términos de sigma que ahora es tu variable independiente.
2.Graficar la parte imaginaria de la función. Haces lo mismo que en el anterior pero ahora tomas la parte imaginaria de la función (la b que debe de quedar solo en términos de jomega), sin embargo ahora toma el valor absoluto de esta función y graficalaen términos de omega.
3. Graficar el módulo del número complejo. Haces lo mismo que en la parte uno, pero ahora tendrás que sacar el módulo a la función a+jb = raiz cuadrada(a*a+b+b). Esta función queda en términos de dos variables independientes (sigma y omega) por lo que la gráfica será la de una superficie en 3D, donde la altura de la superficie en un punto dado es igual al valor absoluto de la función en ese punto.

Por lo tanto, de estas tres formas, de seguro encontrarás algún libro sobre análisis de circuitos o variable compleja por si tienes dudas de como manejar funciones de variable compleja y para graficar, tú ya sabrás como. Saludos...

Instituto Politécnico Nacional
Escuela Superior de Ingeniería Mecánica y Eléctrica Zacatenco
Ingeniería en Comunicaciones y Electrónica, Especialidad en Computación.
México D.F.

    Pregunta:  32596 - FILA O ARCHIVO SECUENCUAL COMO PARAMETRO
Autor:  juan orbezov
holaa:
como puedohacer para ingresar un archivo secuencial como parametro de una funcion.este archivo debe ser de caracteres , y tambien como parametro ingresa un vertor de caracteres , con este ultimo busco si lo escrito en el segundo o vector esta dentro de la fila secuencial.
apurense por favor , con la respuesta.
gracias
  Respuesta:  Juan Carlos Ruiz
querido amigo , no puedes pasar un archivo como parametro , lo que si puedes hacer es pasar como parametro una referencia a un archivo, sea un puntero o un handle, y una vez estos datos ingresen a tu funcion, debes realizar comparaciones entre el buffer de lectura y la variable o buffer donde tienes la cadena, el ejemplo es mas o menos este ; mas o menos porque no se si te valla a compilar dado que lo estoy escribiendo y no tengo como compilarlo porque estoy en la oficina, sin embargo los errores seran de pura sintaxis., frecuerda incluir sentencias de control de errores para lograr un trabajo de mayor calidad.

void mifuncion(FILE *,char *);
int main( )
{
FILE *f; //lo trabajare con apuntarres que eas mas facil
char frase[20];

strcpy(frase,"my veinte caracteres");
f=fopen("c:\miarchivo.txt","r");
mifuncion(f, frase);
}

void mifuncion(FILE *arch, char *str)
{
char buffer[20];
. . .
. . . lo que se qujiera hacer
. . .
. . .
//aqui debews poner un becle para recorrer el archivo con fseek
//el valor leido del archivo de texto se almacena en bufer
//que en este caso lee de a 20 caracteres
//posteriormente se debe hacer una comparacion
//entre el buffer y la frease almacenada en str , que la frase que
//pretendemos encontrar en el archivo.

fread(buffer,sizeof(buffer,1,arch));
if(strcmp(buffer,&arch)==0)
{
loque tengas que hacer
}
else
{
lo que tengas quew hacer
}
fseek(arch,20,SEEK_CUR);
//aqui finalizaria el ciclo
}
El programa es sencillo, pero puedes demorarte un poco , sobre todo si no tienes practica en el tratado de archivos, te lo entregaria completo, pero soy muy amigo del espiritu investigativo y del cacharreo suerte, cualquier inquietud no dudes en escribirme.

    Pregunta:  32802 - LLAMANDO AL EDIT DEL DOS
Autor:  JANATHAN PIVARAL
TENGAN BUEN DIA.
ME GUATARIA SABER COMO LLAMAR AL EDITOR DE TEXTO DEL DOS(EDIT), Y LUEGO RELACIONAR EL TEXTO EDITADO CON UN ARCHIVO YA EXIXTENTE,
POR EJEMPLO, SI YO TENGO GUARDADO UN ARCHIVO QUE TENGA LA FORMA DE UNA HOJA ELECTRONICA, Y A ESTO LE QUIERO AGREGAR TITULO Y LA FECHA, Y LUEGO GUARDARLO CON LAS MODIFICACIONES, COMO PODRIA HACER ESTO.
GRACIAS POR SU AYUDA.
  Respuesta:  andres alexander gonzalez cadena
para llamar al editor de texto en dos lo que tienes que hacer es utilizar la funcion system que se utiliza asi:

# include <stdio.h>

main()
{
system("edit");
}

    Pregunta:  32960 - COMO HACER UN SLIDER CON VISUAL C++
Autor:  Federico
como hago a partir de una imagen y un boton un control tipo slider.
Aclaracion : la imagen la utilizo como fondo del slider.
  Respuesta:  Guillermo Ruffino
Supongo que estas trabajando directamente en Win32 porque sino utilizarías la clase CSplitter (o algo así de MFC que no me interesa).
Yo personalmente no utilice ni imagen de fondo ni boton...
La idea es poner un RECT statico en la funcion de la ventana que te interesa que tenga los límites del cuadro que es actualmente el slider, y cuando el mouse se mueva al punto cambias el puntero al <-> para indicar.
Después si se hace clic tenes que activar una bandera para seguir y capturar el mouse por si suelta fuera de la ventana que te llegue el mensaje que suelta el boton.
Después tenés que dibujar con GetDC(hWnd) (de la ventana principal) lo más facil para dibujar es un rectángulo con un pincel de cuadricula que invierta el contenido de la pantalla, así al meverlo, lo dibujas de nuevo y queda como antes. y tiene exáctamente la misma apariencia que cuando se cambia el tamaño de una ventana de windows (con la opcion de mostrar contenido mientras se arrastra desactivado)... la otra opcion sería cambiár el tamaño de las ventanas mientras se arrastra el puntero. Yo personalmente pregunto al windows que hizo con esta opcion el usuario (si muestra el contenido o no) y de ahí toma la desición de dibujar el contorno o cambiar el tamaño de los controles). Si te interesa el código mandame un mail.

    Pregunta:  33041 - COMO USO DOS.H EN VISUAL C++
Autor:  J Larco
Necesito utilizar las funciones
setvect(....) y getvect(....) y otras funcione miembro de la libreria dos.h en Visual c++ como puedo hacerlo?
Existen otras funciones que hagan lo mismo en Visual?
Ojala me puedan ayudar, gracias.
  Respuesta:  José Filomén
las funciones del dos.h, se encuentran inhabilitadas en Visual C++ al igual que conio.h, por ello no funciona gotoxy, clrscr, entre otras herramientas. solo te queda compilar en C++ para dos

|<  <<  49 50 51 52 53 54 55 56 57 58 59  >>  >|