[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    При любой операцией с Memo, вылетает эксепшн. ShowMessage() норм работает, выводит мне ИП....
    Прошелся еще раз трассировкой заметил одну вещь, очень долго думает над строчкой:
    Code:
    	pcap_loop(adhandle, 0, packet_handler, NULL);
     
  2. MaSTeR GэN

    MaSTeR GэN Member

    Joined:
    23 May 2008
    Messages:
    102
    Likes Received:
    54
    Reputations:
    7
    хм.. не кто случайно не подскажет как можно получить листинг файлов в директории на C++ ?
     
  3. GALIAFF

    GALIAFF Elder - Старейшина

    Joined:
    28 Sep 2007
    Messages:
    45
    Likes Received:
    28
    Reputations:
    5
    findfirstfile, findnextfile
     
    1 person likes this.
  4. MaSTeR GэN

    MaSTeR GэN Member

    Joined:
    23 May 2008
    Messages:
    102
    Likes Received:
    54
    Reputations:
    7
    2galiaff а можно немного поподробнее что за библиатека и пример использования если конечно не затрудит ! Заранее спасибо :)и желательно для консольного приложения :)
     
    #1704 MaSTeR GэN, 5 Oct 2008
    Last edited: 5 Oct 2008
  5. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Воспользуйся поиском. Товарищ nerezus пару недель назад приводил пример.
     
  6. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Вот пример поиска, тока я не помню где я его нашел:
    Code:
    void FindDir(char *path,char *mask, char file[]) 
    {   
        WIN32_FIND_DATA wfd;    
        HANDLE hfound;  
        char newpath[MAX_PATH]; 
        char fpath[MAX_PATH];   
        char pathifile[MAX_PATH]; //полный путь до файла
        char delpath[MAX_PATH];
    
        strcpy(fpath,path); 
        strcat(fpath,"\\"); 
        strcpy(delpath,fpath);  
        strcat(fpath,mask); 
     
     
        if((hfound=FindFirstFile(fpath,&wfd))!=INVALID_HANDLE_VALUE)    
            {
            if(!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,"."))   
                {
                //нашли первый файл в папке path    
                //  
    			printf("Error: %d\n", GetLastError());
                }
            while(FindNextFile(hfound,&wfd))    
                {   
                if(!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,"."))   
                    {
                    // файл в папке path    
                    // delpath - папка, с которой начинается реккурсия
                    // wfd.cFileName - имя найденного файла
     
                    // копируем строку delpath в pathifile
                    strcpy(pathifile, delpath);
                    // прибавляем к строке pathifile значение
                    // переменной wfd.cFileName - имя файла
                    strcat(pathifile, wfd.cFileName);    
    				if (strstr(pathifile, file) != NULL)
    				{
    				//	send(sd, pathifile, strlen(pathifile), 0);
    					strcat(tmp, pathifile);
    					strcat(tmp, "\n");
    				}
                    // делаем что-либо с найденным файлом         
     
                    }
                }
            }
            
        FindClose(hfound);  
        //поиск файлов закончили, теперь ищем подпапки  
        strcpy(fpath,path); 
        strcat(fpath,"\\*.*");  
        
        if((hfound=FindFirstFile(fpath,&wfd))!=INVALID_HANDLE_VALUE)    
            {
            if((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,"."))    
                {
                strcpy(newpath,path);   
                strcat(newpath,"\\");   
                strcat(newpath,wfd.cFileName);  
                FindDir(newpath,mask, file, sd); //Рекурсивный вызов  
                }
            
            while(FindNextFile(hfound,&wfd))    
                {
                if((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&&strcmp(wfd.cFileName,"..")&&strcmp(wfd.cFileName,"."))    
                    {
                    strcpy(newpath,path);   
                    strcat(newpath,"\\");   
                    strcat(newpath,wfd.cFileName);  
                    FindDir(newpath,mask, file, sd); //Рекурсивный вызов  
                    }
                }
            }
        }
    
    
    (c) чье_то_но_не_мое
     
  7. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Что нужно добавить в код, чтобы Memo1 был виден в моей функции?
    Если я внутри своей функции делаю:
    Code:
    TMemo1 *Memo1;
    
    то получаю: Undefined symbol 'TMemo1'
     
  8. horlyk

    horlyk Elder - Старейшина

    Joined:
    2 Dec 2007
    Messages:
    132
    Likes Received:
    6
    Reputations:
    0
    народ, подскажите как заставить консольку создать новую директорию? тоесть мне нужно чтоб программа создавала папку с определенным именем, которое заранее известно. А потом после этого удалить директорию. И еще, как можно сделать чтоб из переменной класса стринг(и чар) можно текст использовать в виде имени файла или папки? я использую ofstream заранее спс. VC++ 6.0

    ofstream txtfile("C:\Program Files\myfolder\mytxt.txt");
     
  9. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Code:
    BOOL CreateDirectory(
    LPCTSTR lpPathName, // directory name
    LPSECURITY_ATTRIBUTES lpSecurityAttributes // SD
    );
    
    Пример:
    Code:
    void main()
    {
    if (CreateDirectory(”c:\\new”,NULL))
     printf("Done!\n");
    else
     printf("Error\n");
    }
    
     
  10. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    [cleared]
    Сделал :)
     
    #1710 criz, 5 Oct 2008
    Last edited: 5 Oct 2008
  11. ToniKapuchon

    ToniKapuchon Elder - Старейшина

    Joined:
    26 Feb 2006
    Messages:
    153
    Likes Received:
    45
    Reputations:
    -1
    Нажимаю я клавишу например f5, получаю её виртуальный код в десятичном представлении = 116! Возможно ли каким нибудь мегахитрым путём, получить VK_F5 и шестнадцатиричное представление етой клавиши (без забивки значений массива)
     
  12. VIP

    VIP Elder - Старейшина

    Joined:
    29 Dec 2004
    Messages:
    104
    Likes Received:
    3
    Reputations:
    0
    Каким образом в операторе if (в С) можно остановить выполнение программы, при выполнении заданного условия?
     
  13. horlyk

    horlyk Elder - Старейшина

    Joined:
    2 Dec 2007
    Messages:
    132
    Likes Received:
    6
    Reputations:
    0
    Code:
    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    
    void main()
    {
    if (CreateDirectory("c:\\new",NULL))
     cout << "Done!\n";
    else
     cout <<"Error\n";
    }
    чет не работает(

    Code:
    error C2664: 'CreateDirectoryW' : cannot convert parameter 1 from 'const char [7]' to 'LPCWSTR'
     
  14. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    можно использовать return или exit()
    Code:
    if( /* условие */)
      return 0; // или return 1
    
    
    или
    Code:
    if( /* условие */)
      exit(0);
    
     
    #1714 criz, 5 Oct 2008
    Last edited: 5 Oct 2008
  15. VIP

    VIP Elder - Старейшина

    Joined:
    29 Dec 2004
    Messages:
    104
    Likes Received:
    3
    Reputations:
    0
    Это как ? Вот так у меня не работает:

    Code:
    # include <iostream>
    # include <stdlib.h>
    int main() {
        int n, a0, a1, a2, a3;
        char a01, a11, a12;
        printf("Enter n, please:");
        scanf("%d", &n);
        a0=(n/1000);
        a1=(n/100)-a0*10;
        a2=(n/10)-(a0*100+a1*10);  
        a3=n-(a0*1000+a1*100+a2*10);
        
        if (n<10) {
                  printf("Error: n have only one digital");
                  exit();
        }
        else if (n>9999) {
             printf("Error: n>9999");
        }
        else {}
        
        if (a0==0 && a3!=0) {
                  a0=n+1;
           }
        else if (a1==0 && a3!=0) {
                  a1=n+2;              
           }
        else if (a2==0 && a3!=0) {
                  a2=n+3;
           }
        else {}
        
        if (a0==a1 || a0==a2 || a0==a3 || a1==a2 || a1==a3 || a2==a3) {
           printf("YES!");
           }
        else {
           printf("NO!");
        }
    }
    
    
     
  16. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Code:
    if (n<10) {
                  printf("Error: n have only one digital");
                  exit(1);
        }
    
     
    #1716 criz, 5 Oct 2008
    Last edited: 5 Oct 2008
  17. VIP

    VIP Elder - Старейшина

    Joined:
    29 Dec 2004
    Messages:
    104
    Likes Received:
    3
    Reputations:
    0
    Большое спасибо! Если не трудно скажите, что означает эта -1 и что она даёт?
     
  18. Larionich

    Larionich Member

    Joined:
    21 Sep 2008
    Messages:
    15
    Likes Received:
    5
    Reputations:
    0
    Code:
    int main() {
      //твой текст
       if (temp==0) return 0;
      //текст2
      return 0;
    }
    Лучше используй "return 0;" это стандарт. Если же это условие например ошибка записи/чтения файла, то можно return(21); 21-это код ошибки, если программа завершилась удачно, то его ставят 0, если с ошибкой, то 1-255.
    Часто полезно испоьзовать оператор выхода из цикла- "break".
    Убери exit(); и напиши return 0;. criz, код выхода (-1) не используют, он от 0 до 255.
     
  19. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    1 это статус завершения программы. exit() принимает в качестве аргумента любое число. 0 - означает успешное завершение.
    Larionich, исправил, спасиб :)
     
    #1719 criz, 5 Oct 2008
    Last edited: 5 Oct 2008
    1 person likes this.
  20. horlyk

    horlyk Elder - Старейшина

    Joined:
    2 Dec 2007
    Messages:
    132
    Likes Received:
    6
    Reputations:
    0
    если кому интересно, то вот что я состряпал...

    Code:
    #include <iostream>
    #include <fstream>
    #include <windows.h>
    using namespace std;
    
    
    int main()
    {
    	ofstream fol("C:/abc/ab/a.txt");
    	if(fol.fail())
    	{
    		cout << "creating...\n";
    system("mkdir C:\\abc\\ab");
    ofstream fol("C:/abc/ab/a.txt");
    return main();
    	}
    	else
    	cout << "exist\n";
    }
     
Thread Status:
Not open for further replies.