Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - _Enko

#81
Programación C/C++ / Re: Abrir video con C++
28 Enero 2015, 21:18 PM
Hola, WinExec creo que seria lo que buscas:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms687393%28v=vs.85%29.aspx

llamas a "c:/program files/.........vlc/vlc.exe   nombredearchivo.mp4"

Saludos.
#82
Destabilizar el codigo?

Esa afirmacion es bastante confusa.

Si con codigo estable se refiere a codigo que produce ejecutables estables... entonces goto no seria un problema alli siemper y cuando la ejecutable sea estable.

Ahora, si tienes algo asi:

if(blablabla())
  goto ALGUN_LUGAR_MUY_LEJANO_DE_AQUI;
/*
5.000 lineas de codigo mas abajo:
ALGUN_LUGAR_MUY_LEJANO_DE_AQUI:


Eso si seria molesto. Extremadamente molesto. Muy extremadamente molesto. Demasiado extremadamente molesto.

Si el goto salta 2,3 lineas... para que?  Si con sentencias de control tranquilamente se puede generar el mismo resultado.

No se me ocurre ningun caso donde un goto sea util. Es mas te digo, cuando se programa en ensamblador normalmente se utilizan saltos condicionales: jz, jnz, je, jne, etc...  Tranquilamente se puede programar evitando usar un salto incondicional (JMP) que seria el goto.

Es mas, el programa que usa goto esta desperdiciando bytes...
si pones algo como:

if(algo())
 goto ALGO;

estarias haciendo  algo asi:

  call algo
  test eax, eax
  jnz NEXT:
  JMP ALGO
NEXT:
  ;salida next


Mientras sin el goto, seria simplemente:

if(algo())
  algo2();

seria algo como

  call algo
  test eax, eax
  jnz NEXT
  call algo2
NEXT:


un JMP innecesario menos y no hay que volver a la prehistoria.


Citarya que puede darse el caso que instrucciones nunca se lleguen a ejecutar
eso no seria culpa del goto.

if(1==2){
codigo_que_nunca_se_va_a_ejecutar();
}


Saludos.


PD: una consulta...

Que pasa con C++,  destructores y goto?

{
  MYCLASS my_class; //se llamo al constructor
  goto AVOID_DESTRUCTOR
} //<< aqui la runtime llamaria al destructor del objeto my_class
AVOID_DESTRUCTOR:

O sea, lo entiendo bien? al usar un goto y salirse del scope, el destructor nunca seria llamado?

Acabo de hacer la prueba y el destructor es llamado... raro?

#include <iostream>
using namespace std;



class CClass {
public:
   ~CClass(){
       cout << "destructor" << endl;;
   }
   CClass(){
       cout << "constructor" << endl;
   }
};


int main(int argc, char *argv[]) {
   
   {
       CClass test;
       goto AVOID;
       
   }
AVOID:
   int i;
   cin >> i;
   return 0;
}
#83
Programación C/C++ / Re: Problema al compilar
27 Enero 2015, 20:22 PM
Pero me extraña que te diga que te falte una librería dinamica XArray.dll en tiempo de compilacion. No será la ejecutable que te dice eso?

La dll debería estar junto a la ejecutable o en la carpeta del sistema.

Puedes hacer un copy-past del error que te tira el compilador?
(A lo sumo te está faltanda instalar la runtime de la librería que estas utilizando?)
Saludos.
#85
Programación C/C++ / Re: Problema al compilar
27 Enero 2015, 16:35 PM
Tambien tal vez tengas que vincular el SDK que uses en opciones del compilador.

Saludos.
#86
El .bat ejecuta a RustDedicated.exe... ese es el nombre de proceso que deberías ver si está abierto creo.


Otra alternativa es usar en el .bat siguiente linea al principio

title titulo_de_la_ventana



De esa manera en vez de decir:  c:/WINDOWS/system32..... va a decir:
titulo_de_la_ventana

Luego usas algo como FindWindow y GetWindowText de la winapi para buscar una ventana con ese titutlo.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx

Saludos.
#87
Windows / Re: pantallazo azul de windows
16 Enero 2015, 16:40 PM
Y si inicias XP en modo seguro? con la minima cantidad de drivers posibles?
Con suerte el driver ese no se carga, vas a restaurar sistema o desinstalas el driver molesto.

Saludos.
#88
De nada :)

No tenia el visual studio a mano que posee un decente depurador (dev c++... como que es la pobreza) asi que no salto a la vista depurando  :D
Con Visual Studio creo que hubiera sido mas facil encontarlo.
#89
Código (cpp) [Seleccionar]

#include <iostream>
#include <string>
#include <vector>
using namespace std;


class Nieta {
string nom;
int edad;
public:
Nieta(void) {
nom = "nieta"; edad = 0;
}
Nieta(const string Nombre, const int Edad) {
nom = Nombre; edad = Edad;
}
string MostrarNombre(void) {
return nom;
}
};

class Hija {
string nom;
int edad;
vector<Nieta> v_Nietas;
public:
    string MostrarNombre(){
        return nom;
    }
Hija(void) {
nom = "hija"; edad = 0; v_Nietas.clear();
}
Hija(const string Nombre, const int Edad) : nom(Nombre), edad(Edad) {
v_Nietas.clear();
}
void AgregarNieta(const Nieta UnaNieta) {
v_Nietas.push_back(UnaNieta);
}
Nieta& MostrarNieta(const int Indice) {
return v_Nietas[Indice];
}

};

class Madre {
string nom;
int edad;
vector<Hija> v_Hijas;
public:
Madre(void) {
nom = "madre"; edad = 0; v_Hijas.clear();
}
Madre(const string Nombre, const int Edad) : nom(Nombre), edad(Edad) {
v_Hijas.clear();
}
bool AgregarHija(const Hija UnaHija) {
unsigned int tam = v_Hijas.size();
v_Hijas.push_back(UnaHija);
return (tam == v_Hijas.size())?true:false;
}
Hija& MostrarHija(const int Indice) {
return v_Hijas[Indice];
}
};



int main(int argc, char *argv[]) {
vector<Madre> global_madres;
global_madres.push_back(Madre());
global_madres[0].AgregarHija(Hija());
global_madres[0].MostrarHija(0).AgregarNieta(Nieta());
cout << global_madres[0].MostrarHija(0).MostrarNombre() << endl;
    cout<<global_madres[0].MostrarHija(0).MostrarNieta(0).MostrarNombre()<<endl; //KABOOM, acá explota :(
int i;
cin >> i;
    return 0;
}


Basicamente esta fue la modificacion
Código (cpp) [Seleccionar]

Hija &MostrarHija(const int&Indice) {
return v_Hijas[Indice];
}


Necesitas retornar una referencia al objeto y no el objeto de por si porque hacec
CitarMostrarHija(0).MostrarNieta(0).MostrarNombre()

Saludos.
#90
Me parece que tienes un problema de herencia con datos privados.

Clase nieta debería ser friend de clase mayor, o pasar los datos de la herencia como protected y no private.

Eso es una posibilidad, no te sabría decir bien, sería mas facil sabiendo como está construidas las tres clases.

O bien
cout<<v_Mayor[v_Mayor.size()-1].RetornaNieta(0).MostrameDatos()<<endl;

Deberia de ser algo como

cout<<v_Mayor[v_Mayor.size()-1].v_Hija[x].RetornaNieta(0).MostrameDatos()<<endl;



Recuerda que tambien para simplificar el nesting de vectores puedes tener un vector de la propia clase

class CHIJA{
public:
  ...
private:
  vector<CHIJA> contenido;
};

Saludos.