Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: Thay đổi các thuộc tính của tệp tin (hidden,read-only,archive )

  1. #1
    Ngày gia nhập
    01 2011
    Bài viết
    27

    Mặc định Thay đổi các thuộc tính của tệp tin (hidden,read-only,archive )

    C++ Code:
    1. #include "stdio.h"
    2. #include "conio.h"
    3. #include "io.h"
    4. #include "fcntl.h"
    5. #include "windows.h"
    6. void main()
    7. {
    8.     char tep[14];
    9.     int x,attrib;
    10.     printf("tep=");
    11.     gets(tep);
    12.     printf("chọn thuộc tính 0-để ghi,1-chỉ đọc(cộng thêm 2 thành ẩn)");
    13.     x=getche()-'0';
    14.     if(x==0)
    15.     attrib=_A_ARCH;
    16.     else
    17.     attrib=_A_RDONLY;
    18.     if(x>=2)
    19.     attrib=attrib|_A_HIDDEN;
    20.     if(_chmod("tep",1,attrib)==-1)
    21.     perror("\nLoi");
    22.     else
    23.     printf("ok bede");
    24.    
    25. }
    sai ở chỗ hàm _chmod ai có thể giải thích và sửa dùm em với
    e viết bằng C-free 4.0
    Đã được chỉnh sửa lần cuối bởi orchidshl1 : 01-12-2011 lúc 12:57 PM.

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    46

    Hàm _chmod() nó nhận có 2 đối thôi,
    C++ Code:
    1. int _chmod(
    2.    const char *filename,
    3.    int pmode
    4. );

  3. #3
    Ngày gia nhập
    01 2011
    Bài viết
    27

    Trích dẫn Nguyên bản được gửi bởi Halen Xem bài viết
    Hàm _chmod() nó nhận có 2 đối thôi,
    C++ Code:
    1. int _chmod(
    2.    const char *filename,
    3.    int pmode
    4. );
    theo như giáo trình của thầy Phạm Văn Ất thì là thế này int _chmod(const char *filename,func,int pmode) mình cũng đã sửa hàm như của bạn,chạy thì không có lỗi nhưng thuộc tính trong tệp không thay đổi...

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    46

    Bạn thử đoạn này xem sao.
    C++ Code:
    1.  
    2. #include <sys/types.h>
    3. #include <sys/stat.h>
    4. #include <io.h>
    5. #include <stdio.h>
    6. #include <stdlib.h>
    7. #include <errno.h>
    8.  
    9. // C++
    10. #include <string>
    11. #include <iostream>
    12.  
    13. using namespace std;
    14.  
    15. bool change_mode(const char *file_name, int MODE) {
    16.     if (_chmod(file_name, MODE) == -1) {
    17.         if (errno== EINVAL) {
    18.             cerr << "Invalid parameter.\n";
    19.         }
    20.         else if(errno == ENOENT) {
    21.             cerr << "File not found.\n";
    22.         }
    23.         else {
    24.             cerr << "Unexpected error.\n";
    25.         }
    26.         return false;
    27.     }
    28.     else {
    29.         return true;   
    30.     }
    31. }
    32.  
    33. int main() {
    34.     string file_name;
    35.     int mode;
    36.     cout << "Input file name: ";
    37.     cin >> file_name;
    38.     cout << "Input 0 for read, 1 for write and 2 for both read and write: ";
    39.     cin >> mode;
    40.     if (mode == 0) {
    41.         change_mode(file_name.c_str(), _S_IREAD);
    42.     }
    43.     else if (mode == 1) {
    44.         change_mode(file_name.c_str(), _S_IWRITE);
    45.     }
    46.     else if (mode == 2) {
    47.         change_mode(file_name.c_str(), _S_IREAD | _S_IWRITE);
    48.     }
    49.     else {
    50.         // should not go here
    51.     }
    52.     return 0;
    53. }

  5. #5
    Ngày gia nhập
    01 2011
    Bài viết
    27

    Trích dẫn Nguyên bản được gửi bởi Halen Xem bài viết
    Bạn thử đoạn này xem sao.
    C++ Code:
    1.  
    2. #include <sys/types.h>
    3. #include <sys/stat.h>
    4. #include <io.h>
    5. #include <stdio.h>
    6. #include <stdlib.h>
    7. #include <errno.h>
    8.  
    9. // C++
    10. #include <string>
    11. #include <iostream>
    12.  
    13. using namespace std;
    14.  
    15. bool change_mode(const char *file_name, int MODE) {
    16.     if (_chmod(file_name, MODE) == -1) {
    17.         if (errno== EINVAL) {
    18.             cerr << "Invalid parameter.\n";
    19.         }
    20.         else if(errno == ENOENT) {
    21.             cerr << "File not found.\n";
    22.         }
    23.         else {
    24.             cerr << "Unexpected error.\n";
    25.         }
    26.         return false;
    27.     }
    28.     else {
    29.         return true;   
    30.     }
    31. }
    32.  
    33. int main() {
    34.     string file_name;
    35.     int mode;
    36.     cout << "Input file name: ";
    37.     cin >> file_name;
    38.     cout << "Input 0 for read, 1 for write and 2 for both read and write: ";
    39.     cin >> mode;
    40.     if (mode == 0) {
    41.         change_mode(file_name.c_str(), _S_IREAD);
    42.     }
    43.     else if (mode == 1) {
    44.         change_mode(file_name.c_str(), _S_IWRITE);
    45.     }
    46.     else if (mode == 2) {
    47.         change_mode(file_name.c_str(), _S_IREAD | _S_IWRITE);
    48.     }
    49.     else {
    50.         // should not go here
    51.     }
    52.     return 0;
    53. }
    mình đã chạy thử,chạy tốt nhưng tệp vẫn không thay đổi thuộc tính.
    Bạn xem dùm mình bài dưới nhé,nó có hiện lên là đã thay đổi thuộc tính nhưng khi vào xem thuộc tính tệp bên ngoài thì nó chỉ tick vào thuộc tính read-only còn hidden hay archive thì không được
    C++ Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <io.h>
    4. #include <time.h>
    5. #include <sys/types.h>
    6. #include <sys/stat.h>
    7. #include <conio.h>
    8. #include <fcntl.h>
    9. #include <windows.h>
    10.  
    11. void main( void )
    12. {
    13.    struct _finddata_t c_file;
    14.    
    15.    char d[256];
    16.    char t[ 100 ] = "";
    17.    int hFile;
    18.    int x;
    19.    hFile = _findfirst( "link.txt", &c_file );
    20.    printf("\nchon thuoc tinh: 0-de ghi,1-chi doc(cong them 2 thanh an)");
    21.    x=getche()-'0';
    22.    if(x==0)
    23.    c_file.attrib=_A_ARCH;
    24.    else
    25.    c_file.attrib=_A_RDONLY;
    26.    if(x>=2)
    27.    c_file.attrib=c_file.attrib|_A_HIDDEN;
    28.    if( _chmod("link.txt",c_file.attrib)==-1)
    29.    perror("\nLoi");
    30.    else
    31.    printf("ok");
    32.       printf("\n");
    33.       printf( "HIEN THI THUOC TINH CUA FILE\n" );
    34.       printf("\n");
    35.       printf( "RDO HID SYS ARC  FILE\n");
    36.       printf( "--- --- --- ---  ----\n");
    37.       do
    38.       {
    39.          printf( ( c_file.attrib & _A_RDONLY ) ? " Y  " : " N  " );
    40.          printf( ( c_file.attrib & _A_HIDDEN ) ? " Y  " : " N  " );
    41.          printf( ( c_file.attrib & _A_SYSTEM ) ? " Y  " : " N  " );
    42.          printf( ( c_file.attrib & _A_ARCH )   ? " Y  " : " N  " );
    43.          printf( " %-12s\n",c_file.name);
    44.       } while( _findnext( hFile, &c_file ) == 0 );
    45.      
    46.    struct stat b;
    47.  
    48.    if (!stat("link.txt", &b))
    49.    {
    50.    strftime(t, 100, "%d/%m/%Y %H:%M:%S", localtime( &b.st_mtime));
    51.    printf("\nLAST MODIFIED DATE AND TIME = %s\n", t);
    52.    }
    53.    else
    54.    {
    55.    printf("Cannot display the time.\n");
    56.    }
    57. }
    Đã được chỉnh sửa lần cuối bởi orchidshl1 : 28-11-2011 lúc 11:07 AM.

  6. #6
    Ngày gia nhập
    10 2011
    Bài viết
    46

    Mặc định Thay đổi các thuộc tính của tệp tin (hidden,read-only,archive )

    Hàm _chmod() chỉ cho bạn set write và read thôi, để thay đổi các thuộc tính khác của file bạn phải dùng hàm SetFileAttributes().
    C++ Code:
    1.  
    2. #include <sys/types.h>
    3. #include <sys/stat.h>
    4. #include <io.h>
    5. #include <stdio.h>
    6. #include <stdlib.h>
    7. #include <errno.h>
    8. #include <windows.h>
    9.  
    10. // C++
    11. #include <string>
    12. #include <iostream>
    13.  
    14. using namespace std;
    15.  
    16.  
    17. int main() {
    18.     string file_name;
    19.     cout << "Input file name: ";
    20.     cin >> file_name;
    21.     SetFileAttributes((LPCTSTR) file_name.c_str(), FILE_ATTRIBUTE_ARCHIVE);
    22.     SetFileAttributes((LPCTSTR) file_name.c_str(), FILE_ATTRIBUTE_HIDDEN);
    23.     SetFileAttributes((LPCTSTR) file_name.c_str(), FILE_ATTRIBUTE_NORMAL);
    24.     SetFileAttributes((LPCTSTR) file_name.c_str(), FILE_ATTRIBUTE_READONLY);
    25.     return 0;
    26. }
    Bạn tự handle errors nhé!

  7. #7
    Ngày gia nhập
    01 2011
    Bài viết
    27

    Trích dẫn Nguyên bản được gửi bởi Halen Xem bài viết
    Hàm _chmod() chỉ cho bạn set write và read thôi, để thay đổi các thuộc tính khác của file bạn phải dùng hàm SetFileAttributes().
    C++ Code:
    1.  
    2. #include <sys/types.h>
    3. #include <sys/stat.h>
    4. #include <io.h>
    5. #include <stdio.h>
    6. #include <stdlib.h>
    7. #include <errno.h>
    8. #include <windows.h>
    9.  
    10. // C++
    11. #include <string>
    12. #include <iostream>
    13.  
    14. using namespace std;
    15.  
    16.  
    17. int main() {
    18.     string file_name;
    19.     cout << "Input file name: ";
    20.     cin >> file_name;
    21.     SetFileAttributes((LPCTSTR) file_name.c_str(), FILE_ATTRIBUTE_ARCHIVE);
    22.     SetFileAttributes((LPCTSTR) file_name.c_str(), FILE_ATTRIBUTE_HIDDEN);
    23.     SetFileAttributes((LPCTSTR) file_name.c_str(), FILE_ATTRIBUTE_NORMAL);
    24.     SetFileAttributes((LPCTSTR) file_name.c_str(), FILE_ATTRIBUTE_READONLY);
    25.     return 0;
    26. }
    Bạn tự handle errors nhé!
    theo giáo trình C thì mình thấy có hàm chmod() là để set write và read còn hàm _chmod() set được read-only,archive và hidden vì mình học C nên về C++ cũng không biết nhiều lắm

  8. #8
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    Trích dẫn Nguyên bản được gửi bởi orchidshl1 Xem bài viết
    theo giáo trình C thì mình thấy có hàm chmod() là để set write và read còn hàm _chmod() set được read-only,archive và hidden vì mình học C nên về C++ cũng không biết nhiều lắm
    C và C++ chả liên quan gì ở đây cả

    Chỉ là bạn không biết tên hàm để dùng thôi. Sau này bạn sẽ có kinh nghiệm

  9. #9
    Ngày gia nhập
    01 2011
    Bài viết
    27

    Trích dẫn Nguyên bản được gửi bởi quangnh89 Xem bài viết
    C và C++ chả liên quan gì ở đây cả

    Chỉ là bạn không biết tên hàm để dùng thôi. Sau này bạn sẽ có kinh nghiệm
    a có thể chỉ cho e hàm để dùng thay đổi thuộc tính được không

  10. #10
    Ngày gia nhập
    01 2011
    Bài viết
    27

    mình tìm được hàm để làm thay đổi thuộc tính rồi,thanks các bạn đã giúp

Các đề tài tương tự

  1. Không thể set thuộc tính hidden cho file
    Gửi bởi nxthai2910 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 15-10-2013, 08:37 PM
  2. Thay đổi thuộc tính của View khi focus
    Gửi bởi tieugiang94 trong diễn đàn Nhập môn lập trình Java
    Trả lời: 1
    Bài viết cuối: 10-11-2012, 01:30 PM
  3. dùng hàm nào để hiện file hidden (ô hidden đã bị disable)
    Gửi bởi chitvivo trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 23-08-2011, 11:15 AM
  4. Tạo CEdit Read Only nhưng không làm thay đổi style trong MFC?
    Gửi bởi langman trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 26-02-2011, 10:15 PM
  5. Không thay đổi được 1 số thuộc tính của Picture Box
    Gửi bởi truonghuulong trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 13-03-2009, 05:34 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn