Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странная проблема 
:(
    Опции темы
RDC
Дата 25.5.2008, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Странная проблема. Есть переменная, в которой храниться кол-во файлов в определённой директории. В процессе разработки(тестировании) программы я вручную считал файлы и забивал значение прямо в исходник. Теперь написал функцию для подсчёта кол-ва файлов. Передаю функцию этой переменной, сразу после присваивания ShowMessage дабы проверить правильность. Дак вот, если я присваиваю значение функции то последующие вычисления не верны. Подставляю то же значение в переменную вручную - всё работает! В чём проблема? 

PS Извините за запутанное толкование. 
--------------------
Живопись
PM MAIL   Вверх
Sartorius
Дата 25.5.2008, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



может твоя функция еще и "." c ".." считает
PM MAIL ICQ   Вверх
RDC
Дата 25.5.2008, 02:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всмысле?
--------------------
Живопись
PM MAIL   Вверх
Rrader
  Дата 25.5.2008, 05:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

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



RDC, ".." - это родительская папка для данной
"." - это сама папка. Их нужно просто отбрасывать.

Код

int GetFileCount(const char *Path)
{
  int Count = 0;
  TSearchRec SR;
  int Index = FindFirst(Path, faAnyFile, SR);
  __try
  {
    while(!Index)
    {
       if (!(SR.Attr & faDirectory) && (SR.Name != ".") && (SR.Name != "..")) {
          Count++;
      }
      Index = FindNext(SR);
    }
  }
  __finally
    {
      FindClose(SR);
    }
    return Count;
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  ShowMessage(IntToStr(GetFileCount("C:\\WINDOWS\\*.*")));
}



--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
RDC
Дата 25.5.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я же для проверки переменную вывожу ShowMessage. Там всё нормально!
--------------------
Живопись
PM MAIL   Вверх
ama_kid
Дата 25.5.2008, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



Цитата(RDC @  25.5.2008,  17:18 Найти цитируемый пост)
Там всё нормально! 
не иначе как в 17-й строке ошибка... 


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Sartorius
Дата 25.5.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



ama_kid, ROFL
RDC, покажите код жалким смертным

Это сообщение отредактировал(а) Sartorius - 25.5.2008, 17:53
PM MAIL ICQ   Вверх
RDC
Дата 25.5.2008, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Короче ситуация такая. В удалённой дире имеются хтмлки. Пронумерованы от 0 до хз. Вот это хз вычисляет функция KolQuest.
Если в MaxQuest я подставляю просто число (вручную зайти и посмотреть скока там файлов), то всё работает, если KolQuest то ShowMessage выводит всё правильно но ничё не работает.
Код

int KolQuest()
{
        AnsiString dir="\\\\"+frmClient->IdTCPClient1->Host+"\\files\\";
        int i;
        for(i=0; (FileOpen(dir+IntToStr(i)+".html", fmOpenRead))!=-1; i++);
        return i-1;
        }
//---------------------------------------------------------------------------
__fastcall TfrmClient::TfrmClient(TComponent* Owner)
        : TForm(Owner)
{
        i=0;
        MaxQuest=KolQuest;
        ShowMessage(MaxQuest);
        btnGo->Visible=false;
        Timer1->Enabled=false;
}

--------------------
Живопись
PM MAIL   Вверх
ama_kid
Дата 25.5.2008, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



Цитата(RDC @  25.5.2008,  19:10 Найти цитируемый пост)
ShowMessage выводит всё правильно но ничё не работает
Если ShowMessage выводит все правильно - зачем ты показываешь этот код? Показывай тот, который "не работает"...
Ну и на всякий случай - несколько неправильно использовать переменную i после цикла for...

Добавлено через 1 минуту и 23 секунды
еще одно - не забывай скобки:
Код
MaxQuest=KolQuest();



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
RDC
Дата 25.5.2008, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Это функция где идёт обращение к переменной MaxQuest
Код

        AnsiString q, AnsServ, tmp;
        int KolBut;
        AnsiString TrueAnswer, AnswerRez;
        int f;    //Переменная подсчитывающая правильный номер вопроса

        if (i<=MaxQuest) {
                q=TestDir + IntToStr(i) + ".html";
                f=i-1;
                TrueAnswer=XOR_Crypt(ReturnCode(LastS(q)),"TESTPASS");
                frmClient->ButShow(StrToInt(TrueAnswer[5]));
                if (StrToInt(TrueAnswer[2])==NoAnsQues) {
                        AnswerRez="1";
                        //ShowMessage("Правильно!");
                }
                else {
                        AnswerRez="0";
                        //ShowMessage("Не верно!");
                }
                TrueAnswer="";
                AnsServ="OTV " + frmClient->labelUserName->Caption + " " + f + " " + NoAnsQues + " " + AnswerRez;
                //ShowMessage(AnsServ);
                frmClient->IdTCPClient1->Connect();
                try {
                        frmClient->IdTCPClient1->WriteLn(AnsServ);
                }
                __finally {
                        frmClient->IdTCPClient1->Disconnect();
                }
                tmp="\\\\"+frmClient->IdTCPClient1->Host+"\\files\\";
                tmp=tmp + IntToStr(i) + ".html";
                frmClient->CppWebBrowser1->Navigate(tmp.WideChar(NameQue,100),0,NULL,NULL,NULL);
                i++;
        }
        if ((i-1)==MaxQuest) {
                //DisabledButton();
                AnsiString End=ExtractFilePath(Application->ExeName);
                End=End + "end.html";
                frmClient->CppWebBrowser1->Navigate(End.WideChar(NameQue,100),0,NULL,NULL,NULL);
        }

--------------------
Живопись
PM MAIL   Вверх
ama_kid
Дата 25.5.2008, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



Что это?  smile 
Код
 if (i<=MaxQuest) {
Где инициализация переменной i?



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
RDC
Дата 25.5.2008, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ama_kid, Она объявлена после 
Код

#pragma resource "*.dfm" 
TForm1 *Form1;


Это сообщение отредактировал(а) RDC - 25.5.2008, 20:53
--------------------
Живопись
PM MAIL   Вверх
ama_kid
Дата 25.5.2008, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



RDC, я о другом... Чему равно i на момент сравнения?


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
586
Дата 25.5.2008, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

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



Цитата(RDC @  25.5.2008,  20:10 Найти цитируемый пост)
int KolQuest()
{
        AnsiString dir="\\\\"+frmClient->IdTCPClient1->Host+"\\files\\";
        int i;
        for(i=0; (FileOpen(dir+IntToStr(i)+".html", fmOpenRead))!=-1; i++);
        return i-1;
        }

Где закрытие файлов?

Добавлено @ 21:04
замени на функцию GetFileAttributes FileExists

Это сообщение отредактировал(а) 586 - 25.5.2008, 21:31
PM   Вверх
RDC
Дата 25.5.2008, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



i=0;
--------------------
Живопись
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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