|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
05.02.2008, 23:46 | #1 |
Пользователь
Регистрация: 02.02.2008
Сообщений: 25
|
Cравнение файлов
Всем привет
в MFC есть ткой компонент CFileFind вообщем с его помощью можно узнать информацию о файле (имя,путь,дата создания,дата изменнения...) но я не нашел как узнать размер файла? кнонибудь знает? собственно к делу надо сравнить два файла к примеру первый C:\File\MyOwnFile1.xz и D:\MyOwnFile1.xz если они одинаковы то вернем 1 елзе 0 значит идея такая сравнимаем все данные (время создания ,изменения и размер) если одинаковые то файл кторый D:\MyOwnFile1.xz копируем вместо C:\File\MyOwnFile1.xz буду очень благодарен если поможите кодом) а так и советом хватит) |
06.02.2008, 00:28 | #2 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
В MFC нет компонентов, там только классы. Размер файла дает метод CFileFind::GetLength (в старых версиях был еще CFileFind::GetLength64, теперь он не нужен)
http://msdn2.microsoft.com/en-us/lib...8VS.80%29.aspx примеры есть по ссылке |
06.02.2008, 01:49 | #3 |
Пользователь
Регистрация: 02.02.2008
Сообщений: 25
|
Угу я так и думал но ГетЛенгс у меня компилируеться а при запуске дает ошибку
хз почему ( fprintf(fp,"\tLength\t%s\n",(LPCTST R) iFile->GetLength()); ошибка такая: Unhandled exception at 0x102141eb (msvcr70d.dll) in cs.exe: 0xC0000005: Access violation reading location 0x00000136. а все другие функции работают( может не та к юзаю? |
06.02.2008, 02:22 | #4 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Практически наверняка iFile какого типа? зачем всё это ее приводить LPCTSTR, если проще написать fprintf(fp,"\tLength\t%d\n"....... Размер файла наверняка 0x00000136 (310) байт - после вриведения к указателю это попадает в область NULL-пойнтеров - нижние 64 килобайта, отсюда и результата нет, и access violation. Кстати, fprintf тоже есть "двойного назначения" (коли там LPCTSTR) - _ftprintf (и второй аргумент должен быть дан как _T("\tLength\t%d\n"), не стоит смешивать в одном вызове char, wchar и TCHAR.
|
06.02.2008, 19:36 | #5 |
Пользователь
Регистрация: 02.02.2008
Сообщений: 25
|
спасибо огромное!
при такой записи все работает: fprintf(fp,"\tLength\t%d\n", iFile->GetLength()); __________________________________ тип такой CFileFind *iFile; iFile=new CFileFind(); __________________________________ еще вопросик какой параметр у методов работающие с временим типо GetCreationTime (xz) GetLastAccessTime(xz) GetLastWriteTime(xz) и хотелосьбы узнать что знасит _T(стринг) это перевод в чар? или что? |
06.02.2008, 20:30 | #6 | |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Это был вопрос для того, чтобы Вы сами разобрались куда какой тип С позволяет очень легко орудовать типами, что с непривычки может завести очень далеко.
Цитата:
Код:
Код:
Такая и похожие вещи используются повсеместно применительно к строкам и функциям, прямо или косвенно с ними работающим, для облегчения компиляции ANSI или Unicode - версий приложений. Например таких функций, как SetWindowText или SendMessage в Windows нет вообще с незапамятных времён. Вместо этого есть конструкции вот такого плана: Код:
То есть все анси-функции заменить на юникод-аналоги можно заменить всего лишь определив символ UNICODE. Такая же ситуация со строками - макрос _T(x) (он же _TEXT(x) ) заменяет написанные "человеческим" языком строки либо на (аналогичные) ANSI, либо на двухбайтовые UNICODE еще до компиляции. Точно такая же история и со стандартными функциями, вроде fprintf. Последний раз редактировалось B_N; 06.02.2008 в 20:45. |
|
06.02.2008, 20:43 | #7 |
Пользователь
Регистрация: 02.02.2008
Сообщений: 25
|
большое спасибо за разъяснения!
вот моя функция сравнения файлов! Код:
а у меня их много (спечиально насоздовал) где проблема в алгоритме? |
06.02.2008, 23:26 | #8 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Не работает потому, что Вы пытаетесь вкруговую проходить подкаталог, уже однажды целиком пройденный, не начиная поиск заново. Вот так исправьте: (5-я и 9-я строки
Код:
|
07.02.2008, 00:11 | #9 |
Пользователь
Регистрация: 02.02.2008
Сообщений: 25
|
Еще раз спаибо!
Извени что мучаю) а как задать так чтобы принимались в расчет только файлы исключая папки (т.е. если у нас для всех файлов так: "*.*") то для только файлов? мне еще предстоит дорабоать алгоритм чтоб он еще думал над вложеными папками (и у папак еще о вложеных папках\файлов) вот как то так) это как решить через рекурсию? буду пытаться... Последний раз редактировалось Horror; 07.02.2008 в 00:17. |
07.02.2008, 01:48 | #10 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужна помощь: выбор файлов исходя из имени файлов | Antik163RUS | Помощь студентам | 4 | 19.06.2008 21:20 |
Печать pdf файлов из списка файлов в Excel | АПС | Microsoft Office Excel | 5 | 15.04.2008 16:04 |
Поиск файлов | student_63 | Общие вопросы Delphi | 6 | 07.03.2008 19:00 |
Копирование файлов на FTP | Dj_smart | Общие вопросы Delphi | 2 | 05.03.2008 09:04 |
Открытие файлов *.txt | Bill Gates | Общие вопросы Delphi | 3 | 28.11.2007 22:44 |