|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - diego.martinez
Páginas: 1 ... 6 7 [8] 9 10 ... 12
176
« en: Lunes 2 de Junio de 2008, 12:33 »
y por que no empleas un Buzon? o redireccionas las entradas? solo tienes que comunicarlos no?
177
« en: Viernes 23 de Mayo de 2008, 15:13 »
muchas gracias, era eso. Ya he podido arreglarlo.
anotado y aprendido.
178
« en: Viernes 23 de Mayo de 2008, 14:36 »
Buenas:
Esta es la pregunta, si localizo memoria en una funcion de un procedimiento de una dll, y le paso el puntero a la aplicacion que esta usando esa instancia de dll, por que no puedo liberarla desde el programa anfitrion? es problema de los contextos?
gracias
179
« en: Miércoles 30 de Abril de 2008, 10:48 »
Buenas: Recientemente me he encontrado con un problema al usar plantillas. es un codigo de prueba: //------------------------------------------------------ Main.cpp #include <windows.h> #include <stdio.h> #include "templatea.h" int APIENTRY WinMain(HINSTANCE hInst,HINSTANCE hPrev,LPSTR lp,int nShowCmd) { A < C > Prueba; char s[100]; sprintf(s,"Valor %d",Prueba.Get()); MessageBox(0,s,0,0); return 0; }
//------------------------------------ TemplateA.h #include "templateb.h" template <class T> class A { public: T data; int Get(); };
//------------------------------------ TemplateA.cpp #include "templatea.h" template <class T> int A<T>::Get() { return data.Get();}
Me da problemas al Linkar: main.obj : error LNK2019: unresolved external symbol "public: int __thiscall A<class C>::Get(void)" (?Get@?$A@VC@@@@QAEHXZ) referenced in function _WinMain@16 Debug/TemplatePru.cpp.exe : fatal error LNK1120: 1 unresolved externals he leido que hay que usar export en estos casos, pero si lo pongo el VS2003 me da error de sintaxis. que puedo hacer para poder poner el codigo en los cpp? Muchas Gracias por anticipado.
180
« en: Lunes 21 de Abril de 2008, 12:06 »
Buenas: Estoy intentando crear una aplicación que maneje microcontroladores, para ello estoy haciendo una interfaz para las direcciones de los registros. Tengo unos arrays definidos asi: //----------------------------------------------------------------- TACTL .... // codigo identico a TB_CTL con diferentes direcciones //----------------------------------------------------------------- TB_CTL unsigned short volatile * const TB_CTL [] = { #if __MSP430_TB >= 1 &TBCCTL0, #endif #if __MSP430_TB >= 2 &TBCCTL1, #endif #if __MSP430_TB >= 3 &TBCCTL2, #endif #if __MSP430_TB >= 4 &TBCCTL3, #endif #if __MSP430_TB >= 5 &TBCCTL4, #endif #if __MSP430_TB >= 6 &TBCCTL5, #endif #if __MSP430_TB >= 7 &TBCCTL6 #endif }; //----------------------------------------------------------------- MAIN REGISTERS unsigned short volatile * const MasterReg []= { &TACTL,&TBCTL }; //----------------------------------------------------------------- MODULE REGISTERS unsigned short volatile * const * TimerReg [2][2] = { {TA_CCR,TA_CTL},{TB_CCR,TB_CTL} }; //<<----- PROBLEMA AQUI!
los arrays son direcciones de registros mapeados en memoria, asi que las direcciones son constantes, pero contienen datos Volatiles (que pueden cambiar por el hardware del microcontrolador) La cosa funciona , pero la idea era crearlos constantes para que al optimizarlo, el acceso a estos registros quede lo mas escueto posible (a ser posible una instrucción). El problema surge cuando intentamos dejarlo fijado en el .H que por supuesto nos da que "TimerReg is already defined" pero si lo ponemos en el cpp no nos lo optimiza. La pregunta es: ¿por que no salta el "already defined" con los demas arrays? (suponemos que es por que hace la sustitucion correctamente, pero entonces no saltaria en el TimeReg) ¿como podemos forzar que lo optimice sustituyendo las direcciones constantes? estimo que el problema puede ser de la propia sintaxis de la declaración del array bidimensional TimerReg , que tiene muchos punteros. Muchas gracias por anticipado.
181
« en: Martes 15 de Abril de 2008, 11:10 »
quizas el problema sea usar variables locales, localiza una nueva cadena con malloc y pasale el puntero a la nueva funcion.
182
« en: Martes 8 de Abril de 2008, 10:19 »
lee la entrada como un string y luego verifica que todas las letras esten en el rango '0' a '9' inclusives.
para leer el string puedes usar :
scanf("%s",string_de_recepcion);
una vez sepas que es valida usas atoi(char *) para convertir a int
183
« en: Jueves 6 de Marzo de 2008, 09:33 »
include<stdio.h> # include<conio.h> int k,n,p <<<<<<<<<<<<<<<< falta ; long factorial(int k) { long resultado <<<<<<<<<<<<<<<< falta ; int k; resultado=1 <<<<<<<<<<<<<<<< falta ; for(k=1,k<=n,k=k+1) resultado=resultado*k; return(resultado) <<<<<<<<<<<<<<<< falta ; } void main(void) { int n,p <<<<<<<<<<<<<<<< falta ; printf("dame n,p"); scanf("%d,%d,&n,&p") <<<<<<<<<<<<<<<< falta ; if(n<=0) printf("numero invalido"); else if(p<=0) printf("numero invalido"); else if(p>n) printf("numero invalido"); else
{ fx=factorial(n)/(factorial(n-p)*(factorial(p)) <<<<<<<<<<<<<<<< falta ; printf("f(x)=%ld;fx)"); getch(); }
184
« en: Lunes 3 de Marzo de 2008, 09:03 »
Buenas:
Os cuento, hasta ahora cuando hago un servidor tcp-ip pongo en un hilo el Bind y el Listen.
Cuando entra una conexión, creo otro hilo para que gestione la lectura del Recv.
Asi pues si van entrando conexiones se van creando hilos para gestionar todas las recepciones.
La cosa es que mirando en Internet lei que esta opción tenia un problema de escalabilidad (a medida que entran conexiones los recursos se acumulan), sin embargo no se me ocurre como se podria hacer de otra forma.
Hay alguna idea para conseguir esta escalabilidad? o solo es cuestion de recursos de maquina?
185
« en: Lunes 11 de Febrero de 2008, 16:30 »
podrias usar un mutex y un thread que mire la hora que es y si es pasado x tiempo que se desbloquee o directamente acabar la thread y usar waitforsingleobject
186
« en: Miércoles 23 de Enero de 2008, 11:13 »
si te refieres a arrays seria:
//devuelve un array de bytes
BYTE * DevuelveArray() { BYTE Arr[8]; return Arr; }
//si te refieres al TAD
std::vector<int> * DevuelveVector() { std::vector<int> * v=new vector<int>();
return v; }
187
« en: Martes 22 de Enero de 2008, 11:13 »
/* Esta funcion se tiene que jecutar cuando la ficha a terminado de caer, hay que usar la funcion con_lineas (ya que se debe codificar la deteccion de lineas usando ese contador para eliminarlas del tablero)...pero no se me ocurre como hacerlo...ayudarme por favor.... */ Ya he podido ver que es lo que necesita, estaba escondido en el codigo, Tienes que iterar la matriz por cada linea, y por cada linea comprobar si toda la linea esta ocupada !=0. for (y=0;y<Lineas;y++) { l=0; for (x=0;x<SizeX;x++) if (Matrix[y][x]!=0) l++; if (l==SizeX) //la linea esta completa //Do something }
188
« en: Viernes 18 de Enero de 2008, 09:36 »
lo que puedes hacer es hacer ciclos segun lo encontrado:
o sea:
do { While ( es un espacio); while ( es una letra); palabra++; } while (!feof);
189
« en: Martes 15 de Enero de 2008, 09:03 »
para sacar las monedas que le debes devolver lo que tienes que hacer es ir descontando monedas de mayor a menor hasta que el importe sea 0
o sea,
while (devolver > 50) { devolver-=50; MonedasDe50++; } while (devolver > 20) { devolver-=20; MonedasDe20++; } while (devolver > 10) { devolver-=10; MonedasDe10++; }
etc
eso hara los cambios mas aproximados y reunidos, otra cosa seria si tuvieras que usar las monedas que te han dado en la maquina, entonces tendrias que ir descontando los tipos tambien y si no quedan monedas de ese tipo romper el while y pasar al siguiente.
while (devolver > 50) { if (Monedas[0]==0) break; Monedas[0]--; devolver-=50; MonedasDe50++; } while (devolver > 20) { if (Monedas[1]==0) break; Monedas[1]--; devolver-=20; MonedasDe20++; } while (devolver > 10) { if (Monedas[2]==0) break; Monedas[2]--; devolver-=10; MonedasDe10++; }
etc...
190
« en: Jueves 10 de Enero de 2008, 09:36 »
lo mas facil es que en la funcion recursiva , le pases como parametros los punteros a los 2 arrays, y despues de operar incrementes la direccion en 1 en los 2 punteros. La condicion de parada seria que alguno de ellos fuera NULL.
191
« en: Viernes 21 de Diciembre de 2007, 10:55 »
Buenas:
alguien sabe de algun tutorial para usar RichEdit mediante la WIN32 API?
gracias
192
« en: Viernes 21 de Diciembre de 2007, 10:39 »
hombre, asi a ojo me da que no pilla el enter por que despues de recibir el caracter, incrementas la posicion de i, y luego lo compruebas o sea :
aaaaa\n --------^ metes el caracter en la posicion i incrementas i
aaaaa\n- --------+^ el while comprueba el SIGUIENTE caracter que vete tu a saber lo que es
deberia ser:
void leercadena(tcadena & nombre) { int i=0; while (1){ nombre=cin.get(); if (nombre=='\n') break; i=i+1; } nombre[i-1]='\0'; }
193
« en: Miércoles 12 de Diciembre de 2007, 11:47 »
si usando visual c++ le das a crear nuevo proyecto Win32 y le das a generar DLL dinamica, practicamente solo tienes que leerte el proyecto que genera en el que te explica como hacer casi todo, para enlazar la libreria estatica vale con hacer
#pragma comment (lib,"nombrelibreria.lib");
si los necesitas para usar la lib, si, tendras que incluir los headers esos.
194
« en: Lunes 3 de Diciembre de 2007, 08:55 »
pues era eso exactamente, estaban apuntando al mismo elemento, muchas gracias por la respuesta, que tonteria, si no hubiera estado de marathon programadora lo habria visto  PD: perdon, es que a veces me salen las palabras en ingles y no me acuerdo de decirlas en castellano
195
« en: Jueves 29 de Noviembre de 2007, 09:24 »
Buenas: Tengo un std::map con información sobre unos dispositivos que van dandose de alta a tiempos aleatorios. el mapa es std::map<int,AGKDEVICE *> Devices;
cuando recibo una petición de alta de un device: if (Msg->GetTypeMsg()==TYPEMSG_PRESENCE) { if (AGKINSTALLATION::Get()->GetDevice(id)==NULL) //no esta dado de alta { time_t t=time(0); AGKDEVICE * D=new AGKDEVICE(); Traza=D; D->SetTime (t); D->SetID (id); AGKINSTALLATION::Get()->AddDevice(D); } }
Agkinstallation solo es el mapa y AddDevice solo hace AGKINSTALLATION::AddDevice(D) { Devices[D->GetID()]=D; }
hasta aqui yo creo que todo bien. ahora , quiero iterar todos los devices que me han llegado hasta ahora para ver a que hora llegaron: AGKINSTALLATION * I=AGKINSTALLATION::Get(); if (I->GetDevices().size()>0) { std::map<int,AGKDEVICE*>Map=I->GetDevices(); std::map<int,AGKDEVICE*>::iterator it; for(it = I->GetDevices().begin(); it != I->GetDevices().end(); ++it) { AGKDEVICE* D=it->second; if (D->IsDisabled()) continue; <<< EXCEPCION!!! D es NULO! if (t>(time_t)(D->GetTime()+Elapse)) //timeout! { ... } } }
El problema me llega al iterar, el iterador lleva un Device Nulo cuando it = begin(). Debugeando , veo que en el Mapa esta bien insertado el Device. Yo sospecho que el std::map pueda estar mal iterado, alguien sabe si es eso, y si lo es , como deberia hacer la iteración? en Google siempre empiezan a iterar por Find, pero yo no se cuales estan dados de alta en el momento del checkeo. Otra cosa, yo creia que en la adición del for debia ponerse it++ , sin embargo he visto en ejemplos del google que lo preincrementan. Por que es esto? Muchas gracias.
196
« en: Lunes 26 de Noviembre de 2007, 09:46 »
tal como dice Profesor X, tienes que leer en modo texto , para ello, abre el fichero como "read text"
(fich = fopen(argv[1], "rt") <- "rt"
luego para leer las filas puedes usar la funcion:
fscanf( Handle_Fichero, "...", &v1,...);
puedes ver mejor como funciona en la doc, lo que tu querrias seria tal que:
fscanf( fich , "%d ", *(matriz+i));
197
« en: Jueves 22 de Noviembre de 2007, 11:37 »
Bueno, al final lo saqué, lo dejo aqui por si alguien lo necesita int GetYearWeek() { time_t to,tf; tm * Fecha,*Fecha1; unsigned int Week; tf=time(0); //fecha actual Fecha=gmtime(&tf); Fecha1=gmtime(&tf); Fecha1->tm_hour=0; Fecha1->tm_min=0; Fecha1->tm_sec=0; Fecha1->tm_mon=0; Fecha1->tm_mday=1; Fecha1->tm_yday=0; to=mktime(Fecha); //dia 1 de enero de este año to-=Fecha1->tm_wday*24*60*60; //ajustamos el t segun el dia que sea el 1 Fecha1=gmtime(&to); tf-=to; //segundos desde la semana del 1 tf/=3600; //horas desde semana del 1 tf/=24; //dias desde semana del 1 if (Fecha->tm_year%4==0) tf++; //es bisiesto? tf/=7; //semanas Week= (unsigned int)tf+1; //ajusto de 0 -> 1 return Week; }
198
« en: Jueves 22 de Noviembre de 2007, 10:50 »
Buenas:
estoy desarrollando una funcion para calcular la actual semana del año.
alguien sabe como hacer el algoritmo?
La idea es que dandole un TM o time_t pueda dar la semana del mes en el que estamos, la cosa se complica con los años bisiestos y todo eso, sabeis donde puede estar la formula?
199
« en: Viernes 16 de Noviembre de 2007, 01:49 »
en modo consola puedes usar la instruccion scanf() mirate en google como se usa, es sencillito
en c++ tambien puedes usar los flujos de entrada
cin >> variable;
200
« en: Miércoles 14 de Noviembre de 2007, 16:20 »
pues si, perfecto, era ese el fallo muchas gracias.
Páginas: 1 ... 6 7 [8] 9 10 ... 12
|
|
|