Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [С++] Поиск в имени файлов, Нужна автозамена 
:(
    Опции темы
Gordon
Дата 31.7.2009, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: нет
Всего: 6



Горя, вот мой код в VS 2008:

Код

#include "stdafx.h"
#include <windows.h>
#include <string>


bool AddExtention(std::string dir, std::string ext)
{
    WIN32_FIND_DATAA file;    
    HANDLE hFile = FindFirstFileA(std::string(dir).append("\\*.").c_str(), &file);
    if(hFile == INVALID_HANDLE_VALUE)
    {
        return false;
    }

    do
    {
        MoveFileA(std::string(dir).append("\\").append(file.cFileName).c_str(), 
            std::string(dir).append("\\").append(file.cFileName).append(ext).c_str());
    }while(FindNextFileA(hFile, &file));

    FindClose(hFile);

        return true;
}


int _tmain(int argc, _TCHAR* argv[])
{    
    AddExtention("d:\\dir", ".htm");    
    
    return 0;
}


Все компилируется пез проблем! )))


--------------------

  
     
PM MAIL WWW   Вверх
Горя
Дата 31.7.2009, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



Gordon, эм... Остальная часть программы сделана через инт мейн ()... Нельзя ли что-нибудь с этим сделать?
Если тупо убрать из данной программы всё, на что ругается компилятор, она попросту не работает smile 
А, да. Стыдно говорить, у меня VC++ 6,5
PM MAIL   Вверх
Gordon
Дата 31.7.2009, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: нет
Всего: 6



Цитата(Горя @  31.7.2009,  23:13 Найти цитируемый пост)
Остальная часть программы сделана через инт мейн ()... Нельзя ли что-нибудь с этим сделать?


честно говоря, не совсем понял... Что с чем сделать? 

Сейчас я попставлю VC 6 и там попробую собрать...

Добавлено через 13 минут и 14 секунд
вот код, vc 6.0 воспринимает нормально:

Код

#include "stdafx.h"
#include <windows.h>
#include <string>

bool AddExtention(std::string dir, std::string ext)
{
    WIN32_FIND_DATAA file;    
    HANDLE hFile = FindFirstFileA(std::string(dir).append("\\*.").c_str(), &file);
    if(hFile == INVALID_HANDLE_VALUE)
    {
        return false;
    }

    do
    {
        MoveFileA(std::string(dir).append("\\").append(file.cFileName).c_str(), 
            std::string(dir).append("\\").append(file.cFileName).append(ext).c_str());
    }while(FindNextFileA(hFile, &file));

    FindClose(hFile);

        return true;
}

int main(int argc, char* argv[])
{
    AddExtention("d:\\dir", ".htm");

    system("pause");
    return 0;
}



--------------------

  
     
PM MAIL WWW   Вверх
azesmcar
Дата 31.7.2009, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 9
Всего: 211



Gordon

Я написал причину на предыдущей странице. Он создает Win32 приложение, а там функция main должна быть описана как WinMain, выдается ошибка линкера, в ней все сказано.
PM   Вверх
Gordon
Дата 31.7.2009, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: нет
Всего: 6



Цитата(azesmcar @  31.7.2009,  23:51 Найти цитируемый пост)
Я написал причину на предыдущей странице. Он создает Win32 приложение, а там функция main должна быть описана как WinMain, выдается ошибка линкера, в ней все сказано.


Ну да. Только я думал ему нужно консольное приложение...


--------------------

  
     
PM MAIL WWW   Вверх
Горя
Дата 1.8.2009, 06:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



azesmcar, да, вин32 консоль. Какой вин мейн?


Gordon, вроде, он и надо...
PM MAIL   Вверх
azesmcar
Дата 1.8.2009, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 9
Всего: 211



Цитата(Горя @  1.8.2009,  06:58 Найти цитируемый пост)
azesmcar, да, вин32 консоль. Какой вин мейн?

На предыдущей странице написано.

Цитата(Gordon @  31.7.2009,  23:40 Найти цитируемый пост)
Ну да. Только я думал ему нужно консольное приложение... 

Да, странно что для консоли он WinMain требует, наверное настройки проекта изменены, по умолчанию не должен.
PM   Вверх
Gordon
Дата 1.8.2009, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: нет
Всего: 6



Горя, может стоит заново создать проект и туда вставить код из старого...


--------------------

  
     
PM MAIL WWW   Вверх
Горя
Дата 2.8.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



Сделал новый проект. Всё равно не уверен, будет ли восприниматься в _tmain то, что работало в main ^^
PM MAIL   Вверх
Gordon
Дата 2.8.2009, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: нет
Всего: 6



Горя, а у тебя VC 6 создает файл с _tmain? _tmain - это, вроде, юникодовый вариант main, а тебе, кажется, нужно было определиться с выбором main или WinMain...


--------------------

  
     
PM MAIL WWW   Вверх
Горя
Дата 2.8.2009, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



Нет, у меня никто ничего не создаёт smile 
И нету файла заголовника stdafx, его тоже не создаёт.
Создаю я пустой проект, консольное приложение. Там ничего нет вообще, даже сипипиську надо создавать.
PM MAIL   Вверх
Горя
Дата 2.8.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



Нифига не понимаю. Компилятор ругается на _TCHAR. error C2061: syntax error : identifier '_TCHAR'

PM MAIL   Вверх
Горя
Дата 2.8.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



Заработало, вот в таком виде:
Код

#include "stdafx.h"
#include <windows.h>
#include <string>


bool AddExtention(std::string dir, std::string ext)
{
    WIN32_FIND_DATAA file;    
    HANDLE hFile = FindFirstFileA(std::string(dir).append("\\*.").c_str(), &file);
    if(hFile == INVALID_HANDLE_VALUE)
    {
        return false;
    }

    do
    {
        MoveFileA(std::string(dir).append("\\").append(file.cFileName).c_str(), 
            std::string(dir).append("\\").append(file.cFileName).append(ext).c_str());
    }while(FindNextFileA(hFile, &file));

    FindClose(hFile);

        return true;
}


int main(int argc, char* argv[])
{    
    AddExtention("c:\\dir", ".htm");    
    
    return 0;
}


Переименовал некоторые (!) файлы. В том числе один тхтшник smile 
Но это плевать, главное, что некоторые файлы без расширения расширил.
PS: переименовал 131 из 530 файлов.

Это сообщение отредактировал(а) Горя - 2.8.2009, 20:37
PM MAIL   Вверх
Gordon
Дата 3.8.2009, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: нет
Всего: 6



Цитата(Горя @  2.8.2009,  21:34 Найти цитируемый пост)
Переименовал некоторые (!) файлы. В том числе один тхтшник  

У меня тхтшники не переименовывает... 

Цитата(Горя @  2.8.2009,  21:34 Найти цитируемый пост)
 переименовал 131 из 530 файлов.


А все (530) файлов "находятся"? Можно сделать следующее:
если MoveFile завершается неудачей, вызвать GetLastError() чтобы получить информацию об ошибке... А там уже смотреть, почему происходит ошибка.



--------------------

  
     
PM MAIL WWW   Вверх
Горя
Дата 3.8.2009, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 24.7.2009

Репутация: нет
Всего: нет



Gordon, был тхтшник log.txt, стал log.txt.htm

Нету больше ошибок.
PM MAIL   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0871 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.