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ú

Temas - rulovive

#1
Buen dia... como siempre son mi ultimo recurso porque agoté todas las posibilidades e ideas que tengo... la cosa es asi:

Quiero imprimir un reporte de n numero de registros por edio de una pulsacion de boton (anexo codigo):
pagina = 1; //al pulsar el boton el contador de paginas inicia siempre en 1
           vuelta = 0; //al pulsar el boton siempre establezco empezar a leer en la linea 0

           PrintDialog printdialog1 = new PrintDialog();//instancia nueva para crear un dialogo de impresion
           printdialog1.Document = printDocument1;//se asigna la relacion con el documento a imprimir
           DialogResult result = printdialog1.ShowDialog();//se asigna el resultado de la seleccion del dialogo en la variable result


           // ESTO QUE VIENE AQUI EN VERDE ES PARA OBTENER UNA VISTA PREVIA DEL DOCUMENTO A IMPRIMIR...
           PrintPreviewDialog ppd = new PrintPreviewDialog { Document = printDocument1 }; //<-------creamos un nuevo dialogo preview de impresion
           ((Form)ppd).WindowState = FormWindowState.Maximized;
           ppd.ShowDialog();     //<----------sirve para mostrar el preview de la impresion    


           if (result == DialogResult.OK)
              printDocument1.Print();


esa parte funciona a la perfeccion... ahora anexo dos codigos que tienen que ver con las impresiones en el printdocument1, el primero es con un ciclo while:
while (vuelta < dataGridView1.RowCount)
           {
               
               
               e.Graphics.DrawString(dataGridView1.Rows[vuelta].Cells[0].Value.ToString(), new Font("Times New Roman", 10), Brushes.Black, x, y + 154);
               e.Graphics.DrawString(dataGridView1.Rows[vuelta].Cells[1].Value.ToString(), new Font("Times New Roman", 10), Brushes.Black, x + 260, y + 154);
               e.Graphics.DrawString(dataGridView1.Rows[vuelta].Cells[2].Value.ToString(), new Font("Times New Roman", 10), Brushes.Black, x + 620, y + 154);
               vuelta++;
               y += 35;
               if (y >= printDocument1.DefaultPageSettings.Bounds.Height - 300)
               {

                   y = printDocument1.DefaultPageSettings.Bounds.Y + 154;
                   e.HasMorePages = true;
                   pagina++;

                   break;
               }
           }

el cual simplemente imprime el listado de lo que hay en el reporte con el siguiente resultado:

es decir.... se obtiene lo que se busca sin problema... aparentemente, ya que cuando imprimo fisicamente las hojas... me aparece asi:

es decir.... solo me aparecen las cabeceras y pie de pagina!! (para lo cual hay un codigo tmb, pero no lo anexé porque con ese no hay problema)

despues de eso intenté hacer el mismo codigo pero evitando el uso del while,asi que puse un bucle foreach en vez de while, ya que descubri que con foreach si me lo imprime fisicamente... anexo codigo
foreach (DataGridViewRow renglon in dataGridView1.Rows)
           {
               
               if (renglon.Index == dataGridView1.RowCount)
                   break;
               if (y >= printDocument1.DefaultPageSettings.Bounds.Height - 300)
               {

                 
                   e.HasMorePages = true;
                   pagina++;

                   break;
               }

               foreach (DataGridViewCell celda in renglon.Cells)
               {
                   e.Graphics.DrawString(celda.Value.ToString(), new Font("Times New Roman", 10), Brushes.Black, x, y + 154);
                   x += 300;
               }
               x = e.MarginBounds.Left + 5;
               y += 35;


y aunque este codigo si que funciona -ignoro porque el foreach si imprime el listado y el while no, a pesar de que en la previsualizacion si se ve el listado-, el problema con este pedazo de codigo es que si el reporte es de mas de una pagina, entra en un cliclo infinito ya que cuando se dispara de nueva cuenta el printdocument debido al e.hasmorepages=true, el contador del foreach del renglon se vuelve a posicionar a 0... y nunca termina de leer todos los registros, y tengo entendido que al foreach no se le puede asignar un valor inicial a sus variables... por lo que no me sirve.....
ya intenté poner un for en vez del foreach pero sucede exactamente lo mismo que con el while...
los codigos son exactamente los mismos, aplicados a su correspondiente bucle, pero no entiendo porque el while no funciona!!! alguien me puede ayudar? se supone que si el reporte lo guardara como un pdf, se guardaria con todo y sus registros asi como en la imagen, pero yo quiero imprimirlo fisicamente :s
#2
Hola hermosos... me han sacado de muchas dudas y esta es una que a simple vista deberia de parecer sencilla pero no doy...

resulta que tengo una bd en access con una tabla en donde una columna esta definida con el formato fecha/hora, y configurada para que aparezca con fecha corta (al estilo 01/01/2021)... todo bien

luego en visual studio c# tengo un sistema visual con un datagridview enlazado a un dataset enlazado a la tabla anteriormente mencionada.
Dicho datagridview -en la columna correspondiente a fecha- esta definida como una columna con formato de fecha corta (o "d", que es como se le define a ese formato).

a la hora de guardar el registro utilizo el siguiente codigo:
inventario.registraticket(label9.Text, DateTime.Parse(DateTime.Now.ToShortDateString()),DateTime.Now.ToShortTimeString(), totalizando().ToString());
en donde el primer parametro es el numero de ticket, el segundo parametro es la fecha corta en formato string convertido a un tipo Datetime, el tercer parametro es la hora, y el ultimo parametro es un total, en su correspondiente columna cada parametro... se supone que estoy guardando todo como debe de ser, pero esta mugre columna en el datagridview se aferra a salir de la siguiente forma:
Citar01/01/2021 12:00:00 a.m.
y no se porque rayos me sale con todo y la hora!!
la unca forma en la que pude lograrlo fue que en la bd de access la cilumna fecha era de tipo texto... pero eso me dificulta mucho hacer comparaciones de fecha en mi sistema... alguna pista?
#3
Buenas gente. tengo una form donde me da la necesidad de crear controles de forma dinamica (especificamente son picture boxes que contienen datos para acomodarlos en ciertos espacios en mi form), pero son varias veces las que creo un control y lo manipulo y lo muevo. el problema es que cuando tengo uno creado y creo otro nuevo, los eventos creados de forma dinamica para el control solo se aplican al mas reciente creado, y el anterior pierde la capacidad de manejarse con los eventos creados dinamicamente... ejemplo:

crear picturebox nuevo;
crear evento dinamico mouse up; <-- Evento que me da problema


Se supone que este evento consiste simplemente en que cuando suelto el raton despues de arrastrarel objeto, me lo acomoda en cierta area del form automaticamente, y lo hace tantas veces como yo quiera... pero si lo acomodo y creo otro control igual, el evento pasa a funcionar solamente para el cntrol mas reciente que se creó, y si arrastro y suelto el boton del control creado en primer lugar, ya no funciona el evento... y creo que es porque de cierta manera "caducó", ya que existe un control creado de manera mas reciente.... como puedo arreglar esto?
#4
Redes / problema de subredes que no comprendo
29 Enero 2018, 18:39 PM
tengo este problema que dice que hay una empresa con cuatro departamentos que son parte de la red 192.168.1.0 y a su vez, cada departamento, representado por una maquina, esta dividido en subredes (130 usuarios para uno, 15 para otro, etc etc) y tengo que comunicarlos entre si y a su vez a la pc del CEO; sin problema. pero luego me anexan esta imagen en la que tengo quer basarme para el problema y veo que en la parte encerrada con rojo hay un solo cable...


http://i63.tinypic.com/23waa1.png
y me sale la duda... digo, si voy a crear cuatro subredes, cada una tendra su mascara de red y su puerta de enlace y asi... y como rayos voy a programar en el router que haya 4 puertas de enlace si solo tiene una conexion al switch??? eso se puede acaso?
he pensado mil maneras de hacerlo, aunque no se si sea posible hacerlo porque la verdad desconozco:
- programar de alguna forma el switch para que la puerta de enlace de cada subred sea "transformada" en la del router (192.168.1.1)
- simplemente agregarle tres cables mas al router para empatarlos con cada puerta de enlace xD
- o darme cuenta tontamente que la puerta de enlace 192.168.1.1 funciona para todas las subredes (aunque no veo para que existiria la puerta de enlace de cada segmento)

que se hace en estos casos?
#5
buen dia, yo programaba en c++ varios juegos, y creaba objetos como personajes multiples y los movia todos al mismo tempo (úsese de ejemplo los personajes del monopoly, los cuales eran creados de manera dinamica en tiempo de ejecucion dependiendo cuantos personajes se escogian al iniciar el juego, y todos eran iguales, excepto por el color), y los movia conforme al dado y así, pero en c# estoy muy confundido. ciertamente puedo crear objetos de tipo personaje pero... como hago para crear muchos en tiempo de ejecucion, o mas bien, como le hago para moverlos a todos en tiempo de ejecucion, es decir, para que con el pulso de la tecla de direccion yo asigne cual de todos los objetos creados se va a mover?
#6
maldita duda.... me podrian explicar porque con el primer codigo si pude hacer la apertura, escritura y cierre de un fichero en cada pulsacion del boton, mientras que en el sgundo (habia optado por usar el segundo ya que vi en algunos foros que definir las condiciones de la manipulacion del fichero con filestream era mas "limpio y buena practica"), no me dejaba hacerlo?
otra duda.- porque en el codigo no necesite hacer esto: escribir = new StreamWriter(condiciones);?


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {

       
        StreamWriter escribir;
       
       
       
        public Form1()
        {
           
            InitializeComponent();


           
           
        }

        private void Form1_Load(object sender, EventArgs e)
        {
           
             
           
        }

       

        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = DateTime.Now.ToString();


        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            escribir= File.AppendText("C:\\Users\\Constructora\\Desktop\\ANOTACIONES.txt");
            escribir.WriteLine(label1.Text);
            escribir.Close();
         

        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {

        }
    }
}



esto es lo que pude hacer para abrir, escribir, cerrar y volver a abrr un fichero en cada pulsacion del boton... lo que no entiendo es porque aqui no tuve que usar lo siguiente:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {

        FileStream condiciones = new FileStream("C:\\Users\\Constructora\\Desktop\\ANOTACIONES.txt", FileMode.Open, FileAccess.Write);
        StreamWriter escribir;
       
       
       
        public Form1()
        {
           
            InitializeComponent();


           
           
        }

        private void Form1_Load(object sender, EventArgs e)
        {
           
               
           
        }

       

        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = DateTime.Now.ToString();


        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            escribir = new StreamWriter(condiciones);
            escribir.WriteLine(label1.Text);
            escribir.Close();
           
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {

        }
    }
}
#7
buen dia gente :D
la cosa está asi:
Yo tengo instalado en mi pc el visual c++ express 2010, y tiene la opción de programar aplicaciones visuales en c++, pero el punto malo es que no tiene el intellisense (esa cosita que te permite autocompletar después de que pones la "->"), cosa que si bien, no necesito al 100%, era de gran ayuda cuando no sabia que comando elegir. Luego me pase al visual studio ultimate 2013 pero resulta que en c++ no trae la opción de programar en Windows forms :s.
Antes de estos dos usaba borland developer studio y ese si lo traía con intellisense incluido, pero no quiero tener tres entornos distintos de programación en la computadora.... cual es la mejor opción para aplicaciones visuales en c++ que incluya el intellisense???
#8
que tal gente... años sin pasarme por aquí pero sucede que acabo de tener tiempo libre y bueno... al grano:

cuando estaba en la escuela en clase de programación un dia el profe se puso a meter código como loco en su compu y al final dibujo una especie de tablero, con lineas horizontales, verticales y diagonales, y todas de diferente grosor... el caso es que no recuerdo que rayos estaba tecleando y no le puse atención sino hasta que vi el programa en ejecución y lo único que recuerdo es que usaba unas cosas que se llamaban Word o dword para hacer las lineas....

ahora diez años después quiero hacer un juego estilo "turista" y ya puedo usar colores para cada jugador, fichitas y eso pero me parece un poco rustico dibujar el tablero con asterisquitos y que las fichitas sean representadas por caracteres de arroba y asi (cosa que tmb puedo lograr). lo que quiero es ir avanzando en mi aprendizaje al mismo tiempo que me divierto asi que si alguien me pudiera explicar como se hace una línea en diagonal -ojo, una línea literal, no una hecha con muchos asteriscos- se lo agradecería bastante...

no. no tengo nada de código y no se por donde empezar ya que las referencias que encuentro en google son prácticamente nulas...
si alguien pudiera regalarme el código en consola c++ donde se imprima una línea diagonal, una horizontal y una vertical, todas en distinto grosor, me darían las bases para yo empezar a constuir con ellas y hacer mis propios "dibujos"
#9
buen dia... le he estado dando vueltas a este codiguito pero no le veo el error... el caso es que se me cicla la ejecucion y no me responde... codigo:

include<iostream>
using namespace std;

void main(){
int *a,*b;

a=new int;
b=new int;

for(int i=0; i<=50; i++)
{*a=i;
*b=i;
cout<<*a<<" "<<*b<<" "<<&a<<" "<<&b<<endl;
cout<<endl;

a++;b++;}

system("pause");
}



el programa funciona correctamente si el for es hasta 4 o 5 elementos... pero si son mas de diez se corta la ejecucion y me dice que desencadene un punto de interrupcion.. he probado mi codigo en visual c++ 2010 y en borland c++... en ambos sucede lo mismo, probe tmb modificandolo asi:

void main(){
int *a,*b;

a=new int;
b=new int;

for(int i=0; i<=50; i++)
{*(a+i)=i;
*(b+i)=i;
cout<<*(a+i)<<" "<<*(b+i)<<endl;
cout<<endl;

}

system("pause");}



pero es igual... en ultima instancia me vere obligado a usar la directiva <list> o bien hacerlo con listas enlazadas mediante punteros dentro de una estructura... pero he visto en varios lugares de internet que esta forma tambien es valida, y sin embargo no logro que funcione con mas de diez elementos.... estoy haciendo algo mal?



y ahora el pilon jeje. Alguien sabe si es posible que, teniendo dos clases distintas, el valor de retorno del metodo de la segunda se use como parametro en el metodo de la primera? por ejemplo algo asi:

class uno{
void recibo(int a);
};

class dos{
void paso(int a);
};

int dos::paso(int a){
return a;
}


void uno::recibo(int a){    //esta es la parte que no se como implementar
cout<<dos::paso(a);
}



me podrian ayudar??


#10
que tal amigos.... al grano:
hace poco terminé un juego snake en consola en borland c++. hice una biblioteca conio independiente del entorno (mi programa corre donde quiera). y el juego no tiene errores -que yo haya descubierto-.... el caso es que este juego es una prueba para cierto empleo y antes de enviar mi codigo y el ejecutable quise que un amigo me dijera sus opiniones...
en resumen el me dijo que la logica estaba bien, que el juego corre perfecto pero... en cuestion de optimizacion y posicion del codigo estaba horrible. coloco el codigo:

# include<iostream.h>
# include<conio1.h>
# include<windows.h>
#include<stdio.h>
#include<time.h>

#define ARRIBA 72
#define ABAJO 80
#define DERECHA 77
#define IZQUIERDA 75


void nocursor()                                     //FUNCTION TO DISSAPEARS THE CURSOR OF THE WINDOW
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cci;
cci.dwSize=20;
cci.bVisible=FALSE;
SetConsoleCursorInfo(hStdout,&cci); }
void sicursor()                                     //FUNCTION TO APEARS THE CURSOR OF THE WINDOW
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cci;
cci.dwSize=20;
cci.bVisible=TRUE;
SetConsoleCursorInfo(hStdout,&cci); }


class vibora{
char comptecla,tecla,comida,*head;
int x,y,cx,cy,*hx,*hy,tamano;
public:
int timer,timer1,vel;
bool perder;
vibora(int _x,int _y): x(_x),y(_y){}
void inicializar();
void mover();
void borrar();
void pintar();
void generarcomida();
void comer();
};

void vibora::inicializar()
{tamano=3;
perder=false;
comida='©';
tecla=IZQUIERDA;
comptecla=IZQUIERDA;
timer1=clock()/100;

head=(char *) malloc(tamano *sizeof(int));
head[0]='@';
for (int i = 1; i <= tamano-1; i++)
head[i]='o';

hx=(int *) malloc(tamano *sizeof(int));
hy=(int *)malloc(tamano *sizeof(int));
for(int i=0; i<=tamano-1; i++)
{hx[i]=x+i; hy[i]=y;}

borrar();
pintar();
generarcomida();
}

void vibora::pintar()
{
for (int i = 0; i <= tamano-1; i++)
{gotoxy(hx[i],hy[i]); cout<<head[i];}
}

void vibora::generarcomida()
{int i=0;
cx=2+rand()%37;
cy=2+rand()%9;

do{
   if(cx==hx[i]&&cy==hy[i])
{cx=2+rand()%39;
cy=2+rand()%9;
i=0;}
   else
i++;
}while(i<=tamano-1);

gotoxy(cx,cy); cout<<comida;
}

void vibora::comer()
{
if(hx[0]==cx&&hy[0]==cy)
  {tamano++;
  hx=(int *)realloc(hx, tamano *sizeof(int));
  hy=(int *)realloc(hy, tamano *sizeof(int));
  head=(char *)realloc(head, tamano *sizeof(int));
  head[tamano-1]='o';
  generarcomida();}
}

void vibora::mover()
{
timer=clock()/100;
if(kbhit()) tecla=getch();   //registra pulsacion
if(tecla!=ARRIBA&&tecla!=ABAJO&&tecla!=DERECHA&&tecla!=IZQUIERDA) tecla=comptecla; //si la tecla pulsada es diferente de la de direccion, copia el ultimo movimiento
if((hx[1]==x-1&&tecla==IZQUIERDA )||(hx[1]==x+1&&tecla==DERECHA)||(hy[1]==y-1&&tecla==ARRIBA)||(hy[1]==y+1&&tecla==ABAJO))tecla=comptecla;  //si quiero ir para el lado contrario al que voy, no lo dejo, sino que copio el ultimo movimiento

if((tecla==IZQUIERDA&&comptecla!=DERECHA)||(tecla==DERECHA&&comptecla!=IZQUIERDA)||(tecla==ARRIBA&&comptecla!=ABAJO)||(tecla==ABAJO&&comptecla!=ARRIBA))comptecla=tecla;  //si pulso tecla de direccion y no es contraria, copio a comptecla


if(timer1==timer)
{
if(tecla==IZQUIERDA)
x--;
if(tecla==DERECHA)
x++;
if(tecla==ARRIBA)
y--;
if(tecla==ABAJO)
y++;







if(x==1||x==40||y==1||y==12)     //si choca en la orilla pierde...
for (int i = 0; i <= 2; i++)
  {borrar();
  Sleep(500);
  pintar();
  Sleep(500);
  perder=true;}
else                             //...pero si no choca en la orilla...
{
for (int i = 1; i <= tamano-1; i++)    //...reviso eslabon por eslabon...
if(x==hx[i]&&y==hy[i])    //...y si las coordenadas estan en un eslabon
for (int i1 = 0; i1 <= 2; i1++)
{borrar();
Sleep(500);                //...pierdo...
pintar();
Sleep(500);
perder=true;}
else                         //...pero si no estan en el eslabon...
   if(i==tamano-1&&perder==false)            //...compruebo si ya reviso todos y si ya lo hizo...
   {borrar();
for(int i=tamano-1; i>=1; i--)
{hx[i]=hx[i-1];
hy[i]=hy[i-1];}                     //... se mueve
hx[0]=x;
hy[0]=y;
pintar();
timer1=timer+vel;}
}

}

}

void vibora::borrar()
{
for (int i = 0; i <= tamano-1; i++)
{gotoxy(hx[i],hy[i]); cout<<" ";}
}


void main()
{
randomize();
bool nuevamente=true;
char resp;
for (int i = 1; i <= 40; i++)  //limite superior
{gotoxy(i,1); cout<<"*";}
for (int i = 2; i <= 12; i++)  //limite izquierdo
{gotoxy(1,i);cout<<"*";}
for (int i = 2; i <= 40; i++)  //limite inferior
{gotoxy(i,12); cout<<"*";}
for (int i = 2; i <= 12; i++)  //limite derecho
{gotoxy(40,i);cout<<"*";}





do{                    //do que sirve solo para comenzar y recomenzar el juego despues de perder

 
//este do sirve para elegir nivel de cada partida
  do{ gotoxy(1,13); cout<<"Bienvenido a Snake. Selecciona un nivel para comenzar a jugar (1-5): ";
  sicursor();
  cin>>resp;
  if(resp!='1'&&resp!='2'&&resp!='3'&&resp!='4'&&resp!='5')
{cout<<"Opcion no permitida...Debes seleccionar una opcion del 1 al 5."; Sleep(2000);
gotoxy(1,13);cout<<"                                                                                                                                                     ";
}
  else
{nocursor();
cout<<"Elegiste el nivel "<<resp; Sleep(1000);
gotoxy(1,13);cout<<"                                                                                                                                                     ";
gotoxy(11,13);cout<<"EL JUEGO COMIENZA EN";
gotoxy(20,14); cout<<"3"; Sleep(1000);
gotoxy(20,14); cout<<"2"; Sleep(1000);
gotoxy(20,14); cout<<"1"; Sleep(1000);
gotoxy(19,14); cout<<"YA"; Sleep(1000);
gotoxy(1,13);cout<<"                                                                                                                                                     ";
}         
  }while(resp!='1'&&resp!='2'&&resp!='3'&&resp!='4'&&resp!='5');


  vibora n(20,6);
  n.inicializar();
  switch (resp)
{case '1': n.vel=9; break;
case '2': n.vel=7; break;
case '3': n.vel=5; break;             //switch para la velocidad elegida
case '4': n.vel=3; break;
case '5': n.vel=1; break;}



 
  do{                                //bucle del juego en proceso
n.mover();
n.comer();
}while(n.perder==false);




  gotoxy(15,13);cout<<"HAS PERDIDO"; Sleep(1500);
  gotoxy(1,15); cout<<"Si quieres jugar de nuevo presiona 's', de lo contrario, presiona cualquier otra tecla: ";
  sicursor();
  cin>>resp;
  if(resp=='s'||resp=='S')
{
nocursor();
nuevamente=true;
gotoxy(15,13); cout<<"               ";
gotoxy(1,15); cout<<"                                                                                           ";
for(int i=2; i<=39; i++)
   for(int j=2; j<=11; j++)       //for que sirve para limpiar el campo de juego al perder
   {gotoxy(i,j);cout<<" ";}
Sleep(1000);
}
  else
  nuevamente=false;
 
}while(nuevamente==true);  //do que termina cuando le respondes que ya no quieres jugar


cout<<endl<<"Has elegido salir. ";
system("pause");
}



Si se fijan tengo una clase vibora, sus metodos y la funcion main que es donde va el bucle del juego... este compañero y amigo me dijo que los metodos de la clase definen (o deberian definir) de manera muy especifica y delimitada las propiedades y parametros del objeto, pero no colocar la mayoria del flujo del programa en esas partes... es decir. el me dijo que todos los metodos deberian ser parecidos a lo que hice con el metodo inicializar() y/o borrar(), no como en el metodo de mover(), donde se supone que solo deberia recibir instrucciones y ejecutarlas, mas no tomar  valores ni procesarlos ni nada ahi mismo...
ustedes que opinan? mi codigo es optimo de la forma que está? o podria sacar muchas partes de codigo de los metodos y colocarlo en main o en alguna funcion para que los metodos solo ejecuten instrucciones y parametros recibidos de dichas funciones??
NOTA: Aclaro que este codigo es 100% mio y que en realidad la critica no fue hacia este codigo sino hacia uno mucho mas largo y engorroso (un tetris) en el que el metodo llamado eliminacion tenia aprox el 70% del codigo total del programa... pero como ese codigo no tiene sangrias ni comentarios ni nada (lo hice hace como 4 meses y ni quiero meterme al codigo del metodo eliminacion porque es un reborujo que ni yo entiendo...por culpa de no ponerle los comentarios), puse mejor el del snake, que ilustra un poco mas ordenada la logica que use para el tetris, ya que es igual en casi todo el flujo del codigo... me podrian decir si debo modificarlo o asi esta bien?
#11
buenas friends ando aca nuevamente (siempre digo nuevamente XD) en esta ocasion es para preguntar a ver si alguien podria orientarme sobre el proceso.... quiero instalar freeglut en mi borland c++ o bien en dev c++ en el peor de los casos... tengo que hacerlo de la misma forma que el glut normal??? otra cosilla, vi en otro foro que una persona lo tenia instalado en su dev-c y al correr un proyecto con freeglut tuvo errores de linker y alguien le dijo que probara a crear el proyecto en c y no en c++... glut... funciona en c++... verdad? :-[ es un proyecto visual o de consola?
#12
Bueno ehhh... me da un poco de pena preguntar esto pero este foro siempre me ha sido de ayuda desde aquellos ayeres en los que me interesaba mas el hacking y la seguridad informatica... hoy por hoy ya tengo mi experiencia en c++ pero a la hora de buscar trabajo todos piden saber .net...
la duda es la siguiente: basta con pasar a usar el entorno de microsoft visual studio en lugar del de borland c++ para que mis aplicaciones ya sean en c++ .net?? o tengo que aprender otras cosas? la vdd no encuentro respuesta clara en la red pero todo me da a entender que solo tengo que cambiar el entorno que uso
#13
holaaaa necesito ayuda :D debe ser algo muy facil pero... no recuerdo como se hace y no quiero esperara  entrar a clases para que un profe me ayude :p
alguien sabe cual es el codigo para que el texto de un edit se guarde en un archivo .txt? y que del archivo txt me lleve los datos a un edit??? borland visual c++
#14
 que tal que tal... les cuento:
estoy terminando un sistema de registro en un gimnasio, donde tengo tres tablas. una de informacion de cliente, y otras dos del servicio elegido con fecha de inicio y fin de membresia... esta todo terminado... pero hay un error muy molesto que me salta al tratar de eliminar miembros de la tabla de clientes (al eliminarlos de esa tabla automaticamente se eliminan tambien de las otras dos, si estuvieran en ellas). el problema es cuando la tabla de clientes tiene un solo registro. A la hora de eliminarlo para que la tabla quede vacia me salta este error: "el valor de bof o eof es true o el actual registro se eiliminó. la operacion requerida requiere que haya valores en la tabla"... lo curioso es que el registro de la tabla de clientes si se elimina y queda vacia... pero ya no sigue eliminando en las demas tablas... igual sucede si en la tabla de clientes hay mas d eun miembro pero en las otras hay solo uno...
alguna idea?? posteo el pedazo de codigo problematico:

Citarif(ADOClientes->Locate("Id_cliente",DBLookupComboBox2->Text, Opts))
{
ADOClientes->Edit();
ADOClientes->DeleteRecords(arCurrent);      //linea que me tira el error
ADOClientes->Post();
}

ahora, he tratado con la funcion Delete() en vez de la que tengo ahi pero me dice que la tabla noe sta en modo de edicion... tambien he tratado de cambiar los parametros de borrado pero ninguno funciona, solo el que está entre parentesis... estoy desesperadoooo ayudaaaaaa

oh si, programo en borland c++ builder
#15
la cosa es asi.... me he chutado dos o tres tutoriales sobre metasploit y en concreto sobre el exploit aurora y otro llamado netapi. la cosa es. en la info del netapi me dice que solo se puede usar con sistemas operativos xp todos los service packs, y el aurora con internet explorer 6 y 7.. el caso es que estoy seguro de que todos estos elementos ya estan desfazados.... osea que ya no puedo usarllos con ninguna computadora... excepto con las de los distraidos (que en realidad son pocos), esto es cierto? hay algun exploit que aun pueda usar para entrar a otro equipo mas nuevo??? si... lo que quiero es entrar al pc remoto. por cierto. ya se como usarlos pero igual no funcionan con mi otra pc porque:
1.- en el netapi me dice que la pc victima rechazó mi intento de "bind" y...
2.- en el aurora la pc victima ingresa a la direccion ip trampa, pero no me crea ninguna "session"...
esto es por lo mismo que mencioné aqui arriba?
#16
hola a todos.... este foro siempre me saca de dudas y espero que esta sea otra de esas ocasiones porque esta duda me causa dolor de cabeza:
`
lo que quiero basicamente es saber como hago para poder poner mis propios botones diseñados por mi y todo eso, en una aplicacion de VCL forms en borland c++

supongo qe algo tiene que ver con el tema de herencia... o hay otra forma mas sencilla? como alguna libreria especial o algun componente para poder personalizar, o algo por el estilo?
Esque quiero diseñar una pantalla de presentacion llamativa con botones redondos y de colores diseñados por mi... pero lo unico que logre fue encontrar un componente de boton cuadrado al que le puedo poner imagenes.... es personalizable pero no al 100%, que es lo que yo deseo.... alguien me puede ayudar?

PD. aunque quiero personalizar al 100% el diseño de mi componente, quiero que siga cumpliendo las mismas funciones de un boton comun y corriente, por ejemplo. de paso no seria muxo pedir qu eme ayudaran con ese tema tambien???
#17
bueno, despues de rebuscar en la red alguna pista para mi problema, mi ultima opcion fue recurrir a su ayuda... reculta que yo programo en c++ pero jamás habia salido del borland c++ builder, y al entrar a visual c++ y agarrarle el sentido mas o menos, me tópé con un problema que da risa por su simplicidad... pondré primero como haría el codigo en c++ builder. tengo un boton y un Edit:

-------------------------
(evento del boton)
if Edit1->Text="rulo"
   Close();
else
   ShowMessage("incorrecto");
-----------------------------------

en visual c++ lo hice exactamente igual, con la diferencia de que no existen los edits, y son unos campos de texto llamato textbox.. pero el error me dice que la sintaxis en el renglon del if esta incorrecta, de hecho se me hizo raro que al poner la -> no se abriera un menu con las opciones del objeto como sucedia en el builder, y otro error que me da esque no reconoce el ShowMessage...
acaso en visual c++ se programa diferente que en el builder? alguien podria darme un ejemplo de como hacerlo en visual c++? o es solo problema de las bibliotecas que debo utilizar... necesito ayudaaaaaaaaaaaa
#18
alo alo, aqui de nuevo. ahora con... pues otra duda que espero vaya aqui:
tengo l wifiway 1.0 final, y en el viene tambien el ettercap, sin embargo tengo algunos problemas, ya que para empezar el ettercap en consola no funciona... es decir, inicia bien y todo, pero cuando escogo el menu de sniff se cierra y me pone el mensaje: "this could´n happen, <quiensabeque> fault", recompile in debug mode...
dspues de eso abro el modo grafico que ese si funciona ciento por ciento, pero aqui vienen todas mis dudas, porque he revisado cada manual de uso de ettercap que he visto, y todos dicen lo mismo (basicamente como instalarlo y como envenenar y snifar), pero yo quiero conocer cada comando del programa.. y no hay manual que explique nada de eso :s aparte he visto videos en el youtube para cosas tan simples como que te aparezca el user y pass en el campo de estado y no sale nada... luego tambien quise filtrar (no creo que sea la palabra adecuada) la informacion que recibo en base al numero d epuerto,,, pero a excepcion de un escueto tutorial para la CONSOLA, no he podido averiguar como hacerlo en el modo grafico.... personalmente me gusta mas el modo consola, por eso estoy desesperado por usarla, alguien sabe a que se debe ese error, oq ue debo hacer, o ya de perdido un manual completo para ettercap?
#19
hola hola. no se si este tema esta correcto en esta parte del foro, pero igual me explicaré:

lo qu enecesito es basicamente que una aplicacion se ejecute sola cuando encienda la compu. la aplicacion la tengo guardada en la carpeta de archivos compartidos... leí por ahi algunos tutoriales para hacer un autorun.inf pero solo funcionan en usb y cd dvd, también lei unos tutoriales para activarla desde cmd pero hay que hacerlo manualmente...

la vdd en esta area no soy muy diestro y entiendo muy poco los terminos, asi que si alguien pudiera decirme como se hace se lo agradeceria :D