• Domingo 11 de Mayo de 2025, 17:29

Mostrar Mensajes

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.


Temas - kati

Páginas: [1]
1
C++ Builder / Installshield Express Borland Free Edition
« en: Martes 19 de Junio de 2007, 10:36 »
Buenas!!!
Tengo un pequeño problema....he creado un software con C++ Builder y ahora me dispongo a crear el instalador con InstallShield de Borland (utilizo Borland 6). "No sé muy bién cómo funciona..."
El caso es que mi programa utiliza una DLL y varias librerías.... No sé cómo debo hacer para cargar la DLL a la carpeta system (o system32) desde InstallShield y tampoco que debo hacer para cargar mi programa en Regedit!!
He ejecutado el programa en un win98 dónde debe ir y me da un error "no se pudo encontrar la DLL".... la he cargado manualmente pero no funciona...
Saludos, espero que alguién me pueda echar un cable.... :P

2
C++ Builder / SoluciÓn A Temporizar Thread En Milisegundos
« en: Domingo 17 de Junio de 2007, 14:09 »
Muy buenas!!!!
Aquí os paso una posible solución para temporizar un thread en milisegundos....ESPERO QUE OS SEA DE AYUDA..... es una posible solución sin utilizar timers... (no sé a ver que os parece....): :comp:
my.h
class Mythread : public TThread
{
private:

   SYSTEMTIME systime_Now;
   SYSTEMTIME systime_Start;

protected:

   void __fastcall Execute(void);
   void __fastcall UpdateLabel(void);

public:

   bool Cond;
   int i;
   long lNow;
   long lStart;
   bool firstloop;
   long dif;

   __fastcall Mythread(bool CreateSuspended);

};

my.cpp
__fastcall Mythread::Mythread(bool CreateSuspended)

: TThread(CreateSuspended)
{
   Cond = true;
   firstloop = true;
}
//---------------------------------------------------------------------------
void __fastcall Mythread::Execute(void)
{
   do
   {
      GetSystemTime(&systime_Start);
      if(first == true)
                {
         Synchronize(&UpdateLabel)
                        Sleep(600);// depende del tiempo de ejecución del thread...
                 }
      else
      {
         
         GetSystemTime(&systime_Now);
         lNow = systime_Now.wMilliseconds + 1000 * (systime_Now.wSecond
                       +60 * (systime_Now.wMinute + 60 * (long) systime_Now.wHour));
         dif = difftime(lNow, lStart);
         if(dif >= 1000) // que se ejecute cada segundo...
         {
              Synchronize(&UpdateLabel)
                             Sleep(600);// depende del tiempo de ejecución del thread...
                        }
      }
   }
   while(Cond == true);
}

//---------------------------------------------------------------------------
void __fastcall Mythread::UpdateLabel(void)
{
   lStart = systime_Start.wMilliseconds + 1000 * (systime_Start.wSecond +
    60 * (systime_Start.wMinute + 60 * (long) systime_Start.wHour));
    firstloop = false;
    /*
         introducir aquí el codigo de ejecución del thread
    */
    if(/*condición de salida*/) Cond = false;
} :ph34r:

bYE

3
C++ Builder / ¿timer?para Sincronizar Thread En Milisegundos
« en: Sábado 16 de Junio de 2007, 00:27 »
Buenas a todos! :kicking:
Estoy intentando sincronizar un thread para que ejecute su código cada 1 segundo (en windows...intento evitar las interrupciones..)  He provado con timer_t  timer() de <timer.h> pero me lo permite en segundos. También he provado con Delay() y Sleep() en un While dentro del método Execute...
El tiempo de ejecución del Thread variable ( 400 a 800 ms).
Me interesa controlar el tiempo en milisegundos. ¿¿Alguna función que me lo permita?? ¿¿Puedo introducir un timer dentro del método Execute de un Thread??   :unsure:
Saludos!!  :ph34r:

4
C++ Builder / Waitforsingleobject Trabajando Con Mutex
« en: Miércoles 13 de Junio de 2007, 11:24 »
Buenas..
Tengo un problema con unos threads que acceden a una misma función. He intentado protegerlos con mutex, lo que no sé si lo hago bién. Mi planteamiento es el siguiente:
En un Form1 tengo la función y creo el mutex con SemMutex1 = CreateMutex(NULL, false, "ReadDirectSem"); en el header declaro HANDLE SemMutex1; "como private".
En un Form2 tengo los threads, encargados de pintar una grafica en diferentes series. Declaro el HANDLE de la misma forma. En el thread tengo el siguiente código:
__fastcall WriteMeasure1::WriteMeasure1(bool CreateSuspended)
: TThread(CreateSuspended)

{
SemMutex1 = OpenMutex(NULL, false, "ReadDirectSem");
Cond = true;
}
void __fastcall WriteMeasure1::Execute(void)
{
do{
    Synchronize(&UpdateLabel1);
    Sleep(500);
    }while(Cond == true);
}
void __fastcall WriteMeasure1::UpdateOutput(void)
{
   WaitForSingleObject(SemMutex1, INFINITE);
   //mi función del Form1
   //aquí la funcíón me retorna los valores que imprimo en el grafico....    
   ReleaseMutex(SemMutex1);
   if(condiciones de salida) Cond = false;
}
Tengo tres threads que acceden a la misma función. El problema es el siguiente:   A los 30 segundos de funcionar, los valores que se pintan en la grafica se mezclan,  es decir, que en la Serie1 (thread1) se me pintan los valores que me retorna  el Thread2, etc. entre ellos se intercanvian estos valores......
Es correcto el código, cómo puedo comprovar si el thread toma el HANDLE del mutex?? He visto algún ejemplo dónde se emplea un switch - case, pero es necesario??
Espero que alguien me pueda echar un cable.....gracias... :P

5
C++ Builder / Convertir Ansistring To Const Char
« en: Lunes 11 de Junio de 2007, 13:05 »
Hola a todos!!! :comp:

Necesito convertir un Ansistring obtenido de la siguiente forma:
Label2->Caption = OpenTextFileDialog1->FileName.c_str();
y deseo que sea un const char para utilizarlo en la función  fopen("----","r");
Alguien me puede echar un cable???

Saludos :P

6
C++ Builder / Leer Fichero Csv Por Líneas Y Pasarlas A Un Array
« en: Sábado 9 de Junio de 2007, 15:06 »
Saudos!!!  :kicking:

Necesito pasar a un Array los campos de un fichero CSV dónde tengo habilitadas 3 columnas y 'X' filas. Hasta el momento consigo leer el fichero con las funciones fgets o fgetc y puts de stdio.h
El objetivo es poder leer una fila del fichero, separar los 3 campos en un array o asociarlos a tres variables... y esperar un TIEMPO "T", que viene dado por el campo de tercera columna del CSV, para leer la siguiente fila.
Hasta el momento he hecho lo siguiente:
FILE* fp;
char sLine[10];
fp = fopen("plantilla.csv", "r");
if(fp == NULL) Memo1->Lines->Add("File could not be opened..");
fgets(sLine, 10, fp);
puts(sLine);
Puedo ver que sLine contiene toda la primera línea del fichero.

La pregunta es cómo puedo hacer para leer línea a línea y crear un array con los resultados. Me interesa leer a partir de la segunda línea del CSV.

Otra pregunta cómo hago con fopen para no tener que pasarle el nombre del fichero directo si utilizo un dialog con el que utilizando la función OpenTextFileDialog1->FileName.c_str(); me devuelve la ruta entera. Puedo pasarle la ruta a fopen de alguna forma??

 :lightsabre:  un saludo para todos!!

7
C++ Builder / Montar Un String Con Fecha Y Hora De Systdate.h
« en: Jueves 31 de Mayo de 2007, 23:50 »
Hola a todos,
Quería saber como montra un string en una variable para imprimir en una sola línea de una "Memo":....... "la fecha", "la hora" y "otros caracteres"...
Utilizo la clase systdate.h.

Mi pregunta es de que tipo debe ser la variable "Time" que muesto a continuación:

Time = Now().TimeString();
Date = ...

Y cómo debo imprimirla si deseo montarme un string con la función
sprintF( %--- %---, Date, Time);

Saludos al foro...

xd

8
C++ Builder / Clonar Un Form Con Threads
« en: Miércoles 30 de Mayo de 2007, 23:06 »
Hola a todos...

    Tengo una duda, y es que tengo el siguiente "codigo.h":

class OpenSimpleGraphic : public TThread
{
private:
   HANDLE hSemaphore;
protected:
   void __fastcall Execute(void);
   void __fastcall UpdateForm(void);
public:
   bool Cond;
   __fastcall OpenSimpleGraphic(bool CreateSuspended);
};

..y me interesaría que en el "codigo.cpp", concretamente en "UpdateForm(void) {----}", se me clonara un Form....

Alguien me echa un cable???

xd.

Páginas: [1]