اطلاعیه

Collapse
No announcement yet.

کتابخانه ff.h

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #46
    پاسخ : کتابخانه ff.h

    یه توضیح دیگه باید اینجا در مورد این متغیر ها و استراکچرها داده بشه

    توی این توابع این دوست خوب چینیمون اومده و توی فایل integer.h متغیر ها رو برای راحتی کار و تایپ سریع نامگزاری مجدد کرده

    کد:
    /* These types must be 16-bit, 32-bit or larger integer */
    typedef int		INT;
    typedef unsigned int	UINT;
    
    /* These types must be 8-bit integer */
    typedef char		CHAR;
    typedef unsigned char	UCHAR;
    typedef unsigned char	BYTE;
    
    /* These types must be 16-bit integer */
    typedef short		SHORT;
    typedef unsigned short	USHORT;
    typedef unsigned short	WORD;
    typedef unsigned short	WCHAR;
    
    /* These types must be 32-bit integer */
    typedef long		LONG;
    typedef unsigned long	ULONG;
    typedef unsigned long	DWORD;


    اما در مورد استراگچرهای مورد نیاز این توابع باید بگم 5 تا استراکچر هست که در فایل ff.h تعریف شده و یکی یکی یه توضیح مختصر میدم
    ولی چون متغیر ها خوب نامگزاری شده و یه توضیح مختصر جلوی هرکدوم داره و معلومه برای چیه , پس من دیگه توضیح بیشتر نمیدم ولی اگر لازم بود بپرسید
    استراکچر اول FATFS هست که اطلا عات فت درونش قرار میگیره
    برای دسترسی به هر کدام از متغیر ها و مقادیر داخلی اونها باید بعد از نام استراکچر که تعریف کردید با قرار دادن نقطه (.)و نام متغیر داخلی استراکچر رو قرار بدید که میتونه یکی از متغیر های زیر باشه

    کد:
    /* File system object structure (FATFS) */
    
    typedef struct {
    	BYTE	fs_type;		/* FAT sub-type (0:Not mounted) */
    	BYTE	drv;			/* Physical drive number */
    	BYTE	csize;			/* Sectors per cluster (1,2,4...128) */
    	BYTE	n_fats;			/* Number of FAT copies (1,2) */
    	BYTE	wflag;			/* win[] dirty flag (1:must be written back) */
    	BYTE	fsi_flag;		/* fsinfo dirty flag (1:must be written back) */
    	WORD	id;				/* File system mount ID */
    	WORD	n_rootdir;		/* Number of root directory entries (FAT12/16) */
    #if _MAX_SS != 512
    	WORD	ssize;			/* Bytes per sector (512, 1024, 2048 or 4096) */
    #endif
    #if _FS_REENTRANT
    	_SYNC_t	sobj;			/* Identifier of sync object */
    #endif
    #if !_FS_READONLY
    	DWORD	last_clust;		/* Last allocated cluster */
    	DWORD	free_clust;		/* Number of free clusters */
    	DWORD	fsi_sector;		/* fsinfo sector (FAT32) */
    #endif
    #if _FS_RPATH
    	DWORD	cdir;			/* Current directory start cluster (0:root) */
    #endif
    	DWORD	n_fatent;		/* Number of FAT entries (= number of clusters + 2) */
    	DWORD	fsize;			/* Sectors per FAT */
    	DWORD	fatbase;		/* FAT start sector */
    	DWORD	dirbase;		/* Root directory start sector (FAT32:Cluster#) */
    	DWORD	database;		/* Data start sector */
    	DWORD	winsect;		/* Current sector appearing in the win[] */
    	BYTE	win[_MAX_SS];		/* Disk access window for Directory, FAT (and Data on tiny cfg) */
    } FATFS;


    استراکچر بعدی FIL هست که اطلا عات فایل درونش قرار میگیره و ساختارش این شکلیه

    کد:
    /* File object structure (FIL) */
    
    typedef struct {
    	FATFS*	fs;			/* Pointer to the owner file system object */
    	WORD	id;			/* Owner file system mount ID */
    	BYTE	flag;			/* File status flags */
    	BYTE	pad1;
    	DWORD	fptr;			/* File read/write pointer (0 on file open) */
    	DWORD	fsize;			/* File size */
    	DWORD	sclust;			/* File start cluster (0 when fsize==0) */
    	DWORD	clust;			/* Current cluster */
    	DWORD	dsect;			/* Current data sector */
    #if !_FS_READONLY
    	DWORD	dir_sect;		/* Sector containing the directory entry */
    	BYTE*	dir_ptr;		/* Ponter to the directory entry in the window */
    #endif
    #if _USE_FASTSEEK
    	DWORD*	cltbl;			/* Pointer to the cluster link map table (null on file open) */
    #endif
    #if _FS_SHARE
    	UINT	lockid;			/* File lock ID (index of file semaphore table) */
    #endif
    #if !_FS_TINY
    	BYTE	buf[_MAX_SS];		/* File data read/write buffer */
    #endif
    } FIL;


    استراکچر بعدی DIR هست که اطلاعات پوشه درونش هست و ساختارش این شکلیه

    کد:
    /* Directory object structure (DIR) */
    
    typedef struct {
    	FATFS*	fs;			/* Pointer to the owner file system object */
    	WORD	id;			/* Owner file system mount ID */
    	WORD	index;			/* Current read/write index number */
    	DWORD	sclust;			/* Table start cluster (0:Root dir) */
    	DWORD	clust;			/* Current cluster */
    	DWORD	sect;			/* Current sector */
    	BYTE*	dir;			/* Pointer to the current SFN entry in the win[] */
    	BYTE*	fn;			/* Pointer to the SFN (in/out) {file[8],ext[3],status[1]} */
    #if _USE_LFN
    	WCHAR*	lfn;			/* Pointer to the LFN working buffer */
    	WORD	lfn_idx;		/* Last matched LFN index number (0xFFFF:No LFN) */
    #endif
    } DIR;


    استراکچر بعدی FILINFO هست که خصوصیات فایل درونش هست وساختارش اینطوریه

    کد:
    /* File status structure (FILINFO) */
    
    typedef struct {
    	DWORD	fsize;			/* File size */
    	WORD	fdate;			/* Last modified date */
    	WORD	ftime;			/* Last modified time */
    	BYTE	fattrib;		/* Attribute */
    	TCHAR	fname[13];		/* Short file name (8.3 format) */
    #if _USE_LFN
    	TCHAR*	lfname;			/* Pointer to the LFN buffer */
    	UINT 	lfsize;			/* Size of LFN buffer in TCHAR */
    #endif
    } FILINFO;


    و بعدی که استراکچر نیست ولی ساختار شمارشی یا انیوم هست هم FRESULT نام داره که خطا های برگشتی توابع درونشه و به این صورته

    کد:
    
    /* File function return code (FRESULT) */
    
    typedef enum {
    	FR_OK = 0,			/* (0) Succeeded */
    	FR_DISK_ERR,			/* (1) A hard error occured in the low level disk I/O layer */
    	FR_INT_ERR,			/* (2) Assertion failed */
    	FR_NOT_READY,			/* (3) The physical drive cannot work */
    	FR_NO_FILE,			/* (4) Could not find the file */
    	FR_NO_PATH,			/* (5) Could not find the path */
    	FR_INVALID_NAME,		/* (6) The path name format is invalid */
    	FR_DENIED,			/* (7) Acces denied due to prohibited access or directory full */
    	FR_EXIST,			/* (8) Acces denied due to prohibited access */
    	FR_INVALID_OBJECT,		/* (9) The file/directory object is invalid */
    	FR_WRITE_PROTECTED,		/* (10) The physical drive is write protected */
    	FR_INVALID_DRIVE,		/* (11) The logical drive number is invalid */
    	FR_NOT_ENABLED,			/* (12) The volume has no work area */
    	FR_NO_FILESYSTEM,		/* (13) There is no valid FAT volume */
    	FR_MKFS_ABORTED,		/* (14) The f_mkfs() aborted due to any parameter error */
    	FR_TIMEOUT,			/* (15) Could not get a grant to access the volume within defined period */
    	FR_LOCKED,			/* (16) The operation is rejected according to the file shareing policy */
    	FR_NOT_ENOUGH_CORE,		/* (17) LFN working buffer could not be allocated */
    	FR_TOO_MANY_OPEN_FILES,		/* (18) Number of open files > _FS_SHARE */
    	FR_INVALID_PARAMETER		/* (19) Given parameter is invalid */
    } FRESULT;


    امید وارم کافی باشه
    تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
    به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

    دیدگاه


      #47
      پاسخ : کتابخانه ff.h

      اگر دو تا فایل رو باز کنیم ، موقع خواندن کدومشون خونده میشه ؟ می تونیم انتخاب کنیم که کدوم خونده بشه؟ یه سوال دیگه اینکه اگر یک فایل رو نصفه بخونیم از کجا بفهمیم که تا کجا خوندیم و بریم بقیشو بخونیم؟
      آنکس که بداند و بداند که بداند /، اسب شرف از گنبد گردون بجهاند
      آنکس که بداند و نداند که بداند / ، بیدارش نمایید که بسی خفته نماند
      آنکس که نداند و بداند که نداند / ، لنگان خرک خویش به مقصد برساند
      آنکس که نداند و نداند که نداند / ، در جهل مرکب ابدالدهر بماند

      دیدگاه


        #48
        پاسخ : کتابخانه ff.h

        نوشته اصلی توسط king_of_hearts90
        اگر دو تا فایل رو باز کنیم ، موقع خواندن کدومشون خونده میشه ؟ می تونیم انتخاب کنیم که کدوم خونده بشه؟ یه سوال دیگه اینکه اگر یک فایل رو نصفه بخونیم از کجا بفهمیم که تا کجا خوندیم و بریم بقیشو بخونیم؟
        اگر قرار باشه 2 یا چند تا فایل باز بشه باید دو یا چند FileObject از نوع استراکچر FIL تعریف بشه و با هرکدوم میتونید اون فایل رو بخونبد و بنویسید
        در مورد ادرسش هم باید بگم تازمانی که فایل رو نبستید یا با همون FileObject فایل دیگه ای رو باز نکرده باشید ادرس دیتا رو نگه داشته میشه و اگر دوباره بخواید بخونید ادامه دیتا رو براتون خواهد داد ولی برای خوندن فایل مثلا از فلان ادرس هم تابعی هست که توضیح خواهم داد
        تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
        به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

        دیدگاه


          #49
          پاسخ : کتابخانه ff.h

          سلام
          اگر امکان دارد کل مطلب پست قبلتان را در قالب یک مثال مطرح نمایید.
          ممنون
          مولای من
          نخواهمت که بگریی ولی به گریه دعا کن که وقت رفتن ایام انتظار بیاید

          یا رب الحسین بحق الحسین اشف صدر الحسین بظهورالحجه

          دیدگاه


            #50
            پاسخ : کتابخانه ff.h

            تابع پنجم f_write

            کد:
            FRESULT f_write (
             FIL* FileObject,   /* Pointer to the file object structure */
             const void* Buffer, /* Pointer to the data to be written */
             UINT ByteToWrite,  /* Number of bytes to write */
             UINT* ByteWritten  /* Pointer to the variable to return number of bytes written */
            );


            (اشاره گر تعداد بایت نوشته شده,تعداد بایتی که قراره نوشته بشه,اشاره گر بافر,اشاره گر فایل)f_write
            هست
            حالا این تابع چیه و به چه درد میخوره؟
            برای نوشتن دیتای فایل هایی که قبلا باز کردیم به کار میره

            کجا باید ازش استفاده کرد؟
            اگر بخوایم دیتای فایل رو بنویسیم باید از این تابع استفاده کنیم و حتما قبلش باید فایل رو بدون خطا باز کرده باشیم

            ورودی و خروجی هاش؟
            چهار تا ورودی داره
            1 : اشاره گر فایل FileObject یه اشاره گر به متغیری که باید قبل از این تابع از نوع استراکچر FIL تعریف شده باشه
            2 : اشاره گر فافر Buffer یه یه اشاره گر به متغیر یا تابعی که باید قبل از این تابع تعریف شده باشه
            3 : تعداد بایتی که قراره از فایل نوشته بشه و در بافر قرار بگیره ByteToRead که باید یه متغیر از نوع UINT یا عدد ثابت باشه
            4 : اشاره گر به متغیری که قراره تعداد بایت نوشته شده در اون قرار بگیره ByteRead و باید قبل از تابع از نوع UINT تعریف شده باشه

            و یک خروجی خطا داره که 6 حالت داره
            FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_INVALID_OBJECT, FR_TIMEOUT
            توضیح خطا ها هم مثل توابع قبلی هست

            برای استفاده از این تابع FS_READONLY_ باید صفر باشد

            ByteWritten رو باید بعد از این تابع چک کنیم که برابر مقدار ByteToWrite باشه تا انتهای فایل رو تشخیص بدیم اگر مقدار ByteWritten کوچکتر از ByteToWrite باشه یعنی دیتای فایل به پایان رسیده است
            تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
            به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

            دیدگاه


              #51
              پاسخ : کتابخانه ff.h

              نوشته اصلی توسط محمد صادق ساعی
              سلام
              اگر امکان دارد کل مطلب پست قبلتان را در قالب یک مثال مطرح نمایید.
              ممنون
              این هم مثال برای خوندن از یه فایل توی درایو 0 و نوشتنش توی فایل دیگه توی درایو 1 یا همان کپی فایل از درایو 0 به درایو 1

              کد:
              void main (void)
                  {
                  FATFS fs[2];     // Work area (file system object) for logical drives 
                  FIL fsrc, fdst;   // file objects 
                  BYTE buffer[4096];  // file copy buffer
                  FRESULT res;     // FatFs function common result code 
                  UINT br, bw;     // File read/write count 
              
              
                  // Register work area for each volume (Always succeeds regardless of disk status) 
                  f_mount(0, &fs[0]);
                  f_mount(1, &fs[1]);
              
                  // Open source file on the drive 1 
                  res = f_open(&fsrc, "1:srcfile.dat", FA_OPEN_EXISTING | FA_READ);
                  if (res) die(res);
              
                  // Create destination file on the drive 0 
                  res = f_open(&fdst, "0:dstfile.dat", FA_CREATE_ALWAYS | FA_WRITE);
                  if (res) die(res);
              
                  // Copy source to destination 
                  for (;;) 
                      {
                      res = f_read(&fsrc, buffer, sizeof(buffer), &br);  // Read a chunk of src file 
                      if (res || br == 0) break; // error or eof 
                      res = f_write(&fdst, buffer, br, &bw);        // Write it to the dst file 
                      if (res || bw < br) break; // error or disk full 
                      }
              
                  // Close open files 
                  f_close(&fsrc);
                  f_close(&fdst);
              
                  // Unregister work area prior to discard it 
                  f_mount(0, NULL);
                  f_mount(1, NULL);
                  }
              تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
              به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

              دیدگاه


                #52
                پاسخ : کتابخانه ff.h

                با تشکر از آقای اسدی که آموزش رو سریع پیش میرن بدون کم و کاستی :applause:
                من هم سعی کردم یک فایل pdf از آموزش های آقای اسدی رو درست کنم
                pdf شامل 5 تابعی که آقای اسدی تا الان آموزش دادن هستش
                یعنی f_mount ، f_read ، f_open ، f_close و f_write
                برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

                دیدگاه


                  #53
                  پاسخ : کتابخانه ff.h

                  فایل pdf در سرور picofile
                  http://s2.picofile.com/file/7149046983/5func.rar.html
                  برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

                  دیدگاه


                    #54
                    پاسخ : کتابخانه ff.h

                    سلام
                    ممنون از فایل خوبی که ساخته بودید لطفا" این چند تا مثال را هم درون فایلتان اضافه کنید.
                    ممنون
                    مولای من
                    نخواهمت که بگریی ولی به گریه دعا کن که وقت رفتن ایام انتظار بیاید

                    یا رب الحسین بحق الحسین اشف صدر الحسین بظهورالحجه

                    دیدگاه


                      #55
                      پاسخ : کتابخانه ff.h

                      تابع ششم f_lseek

                      کد:
                      FRESULT f_lseek (
                       FIL* FileObject,  /* Pointer to the file object structure */
                       DWORD Offset    /* File offset in unit of byte */
                      );


                      (افست بایت,اشاره گر فایل)f_lseek
                      هست
                      حالا این تابع چیه و به چه درد میخوره؟
                      برای پرش به بایتی در دیتای فایلی که قبلا باز کردیم و قراره خونده یا نوشته بشه به کار میره

                      کجا باید ازش استفاده کرد؟
                      اگر بخواهیم دیتای فایلی رو از یه ادرس خاصی به جز ادرس جاری بنوسیم یا بخونیم از این تابع باید استفاده کنیم

                      ورودی و خروجی هاش؟
                      دو تا ورودی داره
                      1 : اشاره گر فایل FileObject یه اشاره گر به متغیری که باید قبل از این تابع از نوع استراکچر FIL تعریف شده باشه
                      2 : مقدار ادرس دیتایی که باید فایل از این ادرس خونده یا نوشته بشه

                      و یک خروجی خطا داره که 6 حالت داره
                      FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_INVALID_OBJECT, FR_TIMEOUT
                      توضیح خطا ها هم مثل توابع قبلی هست

                      برای استفاده از این تابع باید FS_MINIMIZE_ کوچکتر از 3 باشد

                      این هم سه تا مثال مختلف
                      کد:
                        /* Open file */
                        file = malloc(sizeof(FIL));
                        if (!file) ...
                        res = f_open(file, "file.dat", FA_READ|FA_WRITE);
                        if (res) ...
                      
                        /* Move to offset of 5000 from top of the file */
                        res = f_lseek(file, 5000);
                      
                        /* Move to end of the file to append data */
                        res = f_lseek(file, f_size(file));
                      
                        /* Forward 3000 bytes */
                        res = f_lseek(file, f_tell(file) + 3000);
                      
                        /* Rewind 2000 bytes (take care on overflow) */
                        res = f_lseek(file, f_tell(file) - 2000);


                      کد:
                        /* Cluster pre-allocation (to prevent buffer overrun on streaming write) */
                      
                        res = f_open(file, recfile, FA_CREATE_NEW | FA_WRITE); /* Create a file */
                      
                        res = f_lseek(file, PRE_SIZE);      /* Pre-allocate clusters */
                        if (res || f_tell(file) != PRE_SIZE) ... /* Check if the file size has been increased correctly */
                      
                        res = f_lseek(file, DATA_START);     /* Record data stream without cluster allocation delay */
                        ...
                      
                        res = f_truncate(file);         /* Truncate unused area */
                        res = f_lseek(file, 0);         /* Put file header */
                        ...
                      
                        res = f_close(file);


                      کد:
                        /* Using fast seek feature */
                      
                        DWORD lktbl[SZ_TBL];          /* Link map table buffer */
                      
                        res = f_lseek(file, ofs1);       /* This is normal seek (file.cltbl is nulled on file open) */
                      
                        file.cltbl = lktbl;          /* Enable fast seek feature */
                        lktbl[0] = SZ_TBL;           /* Set table size to the first item */
                        res = f_lseek(file, CREATE_LINKMAP);  /* Create CLMT */
                        ...
                      
                        res = f_lseek(file, ofs2);       /* This is fast seek (file.cltbl != NULL) */
                      تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
                      به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

                      دیدگاه


                        #56
                        پاسخ : کتابخانه ff.h

                        سلام و حیف
                        مثل اینکه دوستان دیگه نیازی به ادامه اموزش این توابع ندارند
                        دلیل اصلی اینکه بنده تمایلی به این گونه اموزش ها ندارم همینه :sad: :cry:
                        کار رو نصفه و نیمه ول میکنید و دیگه کسی دنبالش نمیکنه
                        حتی کسی در مورد این توابع که اموزشش رو دادیم سوالی هم نداشته
                        بابا بی انصاف ها لااقل به قول خودتون عمل کنید و فایل PDF رو که قرار بود تا اینجای اموزش درست میکردید بعد بیخیال همه چی میشدید
                        حیف که اقای کی نژاد عزیز پست های اضافی رو پاک کردند میخواستم یه چند تا از قولهایی که دادین رو نقل قول کنم :sad:
                        واقعا برای خودم متاسفم :angry: :cry2:
                        تجربه معلم خشنی هست اول امتحان میگیره بعد درس میده !!!
                        به دلیل برخی مشکلات بوجود اماده دیگه امکان ادامه فعالت در این انجمن مقدور نیست.

                        دیدگاه


                          #57
                          پاسخ : کتابخانه ff.h

                          سلام جناب اسدی
                          عزیز مطمئن باش که آموزش هایی که قرار میدید بسیار برای دوستان مفید خوهد بود،البته به شما حق میدم که کمی دلسرد بشید اگه دوستان زیاد فعال نیستند،اما این رو هم در نظر داشته باشید که این آموزش ها مسلما مدت ها بعد هم برای یسیاری از افراد مفید خواهد بود، مثل خود من که بسیار علاقه دارم آموزش های شما را به طور کامل و دقیق پیگیری کنم، اما الان فرصت نیست،ولی حتما در فرصت مناسب به آن ها رجوع خواهیم کرد
                          اونچیزی که در دانشگاه یاد میگیرید، "الفبایی" هست برای نوشتن یک "رمان" !!

                          دیدگاه


                            #58
                            پاسخ : کتابخانه ff.h

                            نوشته اصلی توسط ☺بابابرقی☺
                            سلام جناب اسدی
                            عزیز مطمئن باش که آموزش هایی که قرار میدید بسیار برای دوستان مفید خوهد بود،البته به شما حق میدم که کمی دلسرد بشید اگه دوستان زیاد فعال نیستند،اما این رو هم در نظر داشته باشید که این آموزش ها مسلما مدت ها بعد هم برای یسیاری از افراد مفید خواهد بود، مثل خود من که بسیار علاقه دارم آموزش های شما را به طور کامل و دقیق پیگیری کنم، اما الان فرصت نیست،ولی حتما در فرصت مناسب به آن ها رجوع خواهیم کرد
                            منم کاملا تایید میکنم . منم تو این تاپیک تمامی پست ها رو دنبال می کنم اما چیزی نمی پرسم . نه اینکه مشکلی ندارم نه من فعلا امکان تست و نوشتن برنامه رو ندارم اونم به خاطر اینه که یکم سرم شلوغه مثل درس و اینا .

                            اما منم حتما بعدا از این تاپیک استفاده خواهم کرد .

                            یکی از دلایلی هم که ( تو این وضع سرم شلوغه ) سوالی نمی پرسم اینه که می دونم اگر بعدا مثلا حتی یه ماه دیگه درباره ی تابع f_mount (مباحث اولیه) سوالی داشته باشم شما با صبر و حوصله جواب می دید و از این بابت مطمئن هستم .

                            پس امیدوارم که به کارتون ادامه بدید و مطمئن باشید اونایی که باید از این تاپیک بهره ببرند ٰخواهند برد چه حالا چه ...... :job:



                            دیدگاه


                              #59
                              پاسخ : کتابخانه ff.h

                              سلام
                              آقای اسدی عزیز من خودم هر روز سر به این تاپیک میزنم و منتظر ادمه اون هستم و اگر سوالی هم نمی کنم به خاطره اینه که کاملا واضحه و نیاز به سوال نیست. خواهشا این بحث رو نیمه کاره ول نکنید.
                              آنکس که بداند و بداند که بداند /، اسب شرف از گنبد گردون بجهاند
                              آنکس که بداند و نداند که بداند / ، بیدارش نمایید که بسی خفته نماند
                              آنکس که نداند و بداند که نداند / ، لنگان خرک خویش به مقصد برساند
                              آنکس که نداند و نداند که نداند / ، در جهل مرکب ابدالدهر بماند

                              دیدگاه


                                #60
                                پاسخ : کتابخانه ff.h

                                سلام
                                نه عزیز دل بنده که به شدت پیگیرم و منتظر ادامه .سوال هم که نپرسیدم به این خاطر هست که هم خودتان توضیحات تابع را داده اید و هم اینکه منتظر تکمیل تر شدن هستم تا خودم اقدام به نوشتن برنامه کنم. البته نا گفته نماند بنده به شخصه هفته ی بسیار پر کاری را پشت سر گذاشته ام ولی حتما" یکی از دغدغه های فکری ام همین پست است و انشا الله مابقی پست هایی که قرار است آموزش بدهید.
                                بسیار ممنون
                                مولای من
                                نخواهمت که بگریی ولی به گریه دعا کن که وقت رفتن ایام انتظار بیاید

                                یا رب الحسین بحق الحسین اشف صدر الحسین بظهورالحجه

                                دیدگاه

                                لطفا صبر کنید...
                                X