Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Сортировка в файле
Показать сообщение отдельно

Ветеран


Сообщения: 1404
Благодарности: 135

Профиль | Отправить PM | Цитировать


Хорошая ошибка.
Первый вариант : заточить код под Unicode, я этого не умею - все упирается в константные указатели (я еще не совсем понимаю, как с ними работать, как "поместить" строку с неизвестной длиной в константный указатель на строку), в моем проекте указатели неконстантные.
Второй вариант: Project - Properties - General - Character Set - поставить Not set
Третий вариант: вместо CreateFile, MessageBox, CharToOem явно указать CreateFileA, MessageBoxA, CharToOemA

find это моя пользовательская функция. Про strng, пользовательский тип данных я все объяснил выше.

По поводу hFile=CreateFile сюда http://msdn.microsoft.com/en-us/library/aa363858.aspx

Цитата:
!bResult
Описание функции:
BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped
);
ReadFile возвращается значение типа BOOL

Значение, возвращенное функцией было помещено в переменную bResult. Мы не знаем, что туда было помещено. Чтобы предпринять какие-то действия в зависимости от того, что в этой епременной, мы используем условный оператор if

Синтаксис условного оператора

IF ( ПРОВЕРОЧНОЕ_ВЫРАЖЕНИЕ)
ДЕЙСТВИЕ

Проверочное выражение/ условное выражение - выражение которое при выполнении оказывается либо 1, либо 0.
Действие выполняется, если в проверочном выражении оказывается 1

IF ( ПРОВЕРОЧНОЕ_ВЫРАЖЕНИЕ)
ДЕЙСТВИЕ 1
ELSE
ДЕЙСТВИЕ 2

Действие 1 выполняется, если в условном выражении оказывается 1
Действие 2 выполняется, если в условном выражении оказывается 0

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

Булева алгебра:
ЛОГИЧЕСКОЕ И "возвращает" 1, если все выражение входящие в И истинны, и 0 в противном случае
ЛОГИЧЕСКОЕ ИЛИ "возвращает" 1, если хотя бы одно из выражений входящих в ИЛИ истинно, и 0, если все выражения ложны
ЛОГИЧЕСКОЕ НЕТ "возвращает" 1, если в выражении 0. Возвращает 0, если в выражении 1.

ЛОГИЧЕСКОЕ И в языке С обозначается &&
ЛОГИЧЕСКОЕ ИЛИ в языке С обозначается ||
ЛОГИЧЕСКОЕ НЕТ в языке С обозначается !

Код: Выделить весь код
if(!bResult) {
Msg("Невозможно прочитать файл!"); //Если в bResult оказалась 1
}
else
{			
find(t, (int)fzi, 10,3); //Если в bResult оказалась 0
}
bResult может принять значение либо не 0, либо 0
Если в bResult оказался 0, то это означает что прочитать из файла не удалось
Если в bResult оказался не 0, то это означает что прочитать из файла удалось
(См что может вернуть функция Read File
Код: Выделить весь код
Nonzero indicates success. Zero indicates failure.
ЛОГИЧЕСКОЕ НЕТ (!bResult) меняет значение bResult на противоположное: 1 на 0, 0 на 1.

Таким образом если в bResult оказался 0, то !bResult означает 1
Таким образом если в bResult оказался не 0, то !bResult означает 0
Если !bResult != 0, то выполняется Msg("Невозможно прочитать файл!");
Если !bResult == 0, то выполняется find(t, (int)fzi, 10,3);

По другому условное выражение можно переписать так

Цитата:
if (bResult !=0)
{
find(t, (int)fzi, 10,3);
}
else
{
Msg("Невозможно прочитать файл!");
}

-------
Ehhh.. what's up, doc?..

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:20, 14-07-2008 | #22

Название темы: Сортировка в файле