• Domingo 19 de Mayo de 2024, 18:54

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 - telekito

Páginas: [1]
1
C++ Builder / explorador de archivos
« en: Martes 21 de Abril de 2009, 17:17 »
Hola a todos. Estoy realizando un explorador de archivos con builder c++ 6.0 bajo windows vista; para ello uso un componente ListView:
Código: C++
  1. fastcall TForm1::TForm1(TComponent* Owner)
  2.         : TForm(Owner)
  3. {
  4.  //............ Esta rutina lo que hace es bucar que unidades hay en mi PC y las visualiza en el componente ListView
  5. UINT Unidades=GetLogicalDrives();
  6.   char Unidad;
  7.   char name[4];
  8.   DIR *d;
  9.   struct dirent *dirp;
  10.   TListItem * Item;
  11.   struct stat fileInfo;
  12.   ListView1->ViewStyle=vsList;
  13.  
  14.   name[1]=':'; name[2]='\';
  15.   for(int i=0; i<26; i++){
  16.      if (Unidades & (int)pow(2,i)){
  17.  
  18.         Unidad=(char)((i+'A'));
  19.         name[0]=Unidad;
  20.         Item=ListView1->Items->Add();
  21.         Item->Caption = name;
  22.         Item->ImageIndex=0;
  23.  
  24.       }
  25.    }
  26.  
  27.  
  28. }
  29.  
  30. //---------------------------------------------------------------------------
  31.  
  32. void __fastcall TForm1::DobleClickl(TObject *Sender)   // Al hacer doble click en una carpeta la abre y explora su contenido
  33. {
  34.    TListItem * Item;
  35.    DIR* dir=NULL;
  36.     struct dirent* stdir;
  37.     struct stat fileInfo;
  38.     struct ffblk st;
  39.  
  40.    Item=ListView1->Selected;
  41.    AnsiString camino;
  42.  
  43.  
  44.    camino=Ruta->Text;   // Un TMemo para guardar la última ubicación
  45.    if (camino=="rn")     // Estoy visualizando las unidades
  46.     {
  47.       strcpy(camino.c_str(),Item->Caption.c_str());
  48.       Ruta->Text=(camino.c_str());
  49.  
  50.      }
  51.    else   // si estoy en cualquier otra ruta
  52.     {
  53.  
  54.       strcat(camino.c_str(),Item->Caption.c_str());
  55.       strcat(camino.c_str(),"\");
  56.  
  57.       Ruta->Text=(camino.c_str());
  58.     }
  59.  
  60.    dir=opendir(camino.c_str()); //Abrimos el directorio
  61.  
  62.    ListView1->Clear();  // Limpiamos la lista
  63.    while( (dir!=NULL)&&(stdir = readdir(dir))!=NULL  )
  64.     {
  65.  
  66.           Item=ListView1->Items->Add();
  67.           Item->Caption = stdir->d_name;
  68.           strcat(camino.c_str(),stdir->d_name);
  69.           stat(camino.c_str(), &fileInfo);
  70.           // determinamos que tipo de archivo es... (archivo regular, directorio...)
  71.  
  72.           if( S_ISDIR(fileInfo.st_mode) )
  73.               Item->ImageIndex=0;  // Uso un componente ImageList para ponerle un icono
  74.  
  75.           else
  76.                Item->ImageIndex=2;
  77.  
  78.           //Recuperamos la ruta del directorio que se está recorriendo
  79.           strcpy(camino.c_str(),Ruta->Text.c_str());
  80.     }
  81.     closedir(dir);
  82.   
  83. }
  84.  


El problema es que con ciertas carpetas (Ej: Archivos de programa, windows...) ocurre una excepción de violación de memoria y no consigo solucionarlo. He comprobado que en esos casos la varible dir toma el valor NULL.  Agradecería cualquier ayuda, muchas gracias  ;)

2
C++ Builder / Cliente Servidor
« en: Miércoles 29 de Octubre de 2008, 11:53 »
Antes que nada: hola a todos!!

Estoy realizando un proyecto de fin de carrera que constiste en realizar una aplicación cliente/servidor con Builder C++ 6.0 que pretende conseguir la transmisión de archivos entre uno y otro viendo el directorio en cuestión, y que en caso de desconexión las descargas contiúen la próxima vez por donde se quedaron.

De momento sólo he conseguido hacer un código que envíe un texto, y mi siguiente paso sería poder transmitir un archivo. Estoy algo atascado y si alguien pudiera hecharme una mano se lo agradecería muchísimo.

GRACIAS :P

Páginas: [1]