Доброго Вам времени суток, уважаемые эксперты! Спасибо за ответы на предыдущий вопрос - помогло :) Правда, возникли новые трудности: 1) нужно проверить наличие некоторого файла (например, file.dat). Я использую функцию FindFirstFile("file.dat", lpWin), где lpWin - указатель на структуру LPWIN32_FIND_DATA, объявленную выше. Но она по любому возвращает HANDLE=-1 :( 2) нужно заблокировать некоторый файл - есть функция LockFile, которая блокирует некоторый регион в открытом файле. Но получает она какие-то жуткие параметры - ладно, хендл файла я ей кинуть могу, но что она понимает под "low-order word of offset" и иже с ними - понять не могу :(( Если можно, поясните оба этих вопроса на каком-нибудь примере (MSVC++ 6.0). Заранее благодарен.
Здравствуйте, Ренат! Ну, вопросы совсем даже не по C/C++, а по WinAPI... 1. Попробуйте открыйть на чтение требуемый файл (функция CreateFile()). Если открывается - значит файл существует, если нет - смотрите код ошибки (функция GetLastError()), если он ERROR_FILE_NOT_FOUND, значит файл не существует. Не забывайте закрывать все открытые файлы. 2. Размер файла в файловой системе NTFS может представлять собой 64-битное значение (в FAT - 32-битное). Соответственно, смещение в файле так же может представлять из себя 64-разрядное значение. Функция LockFile() принимает 64-битные значения, разделенные на пару 32-битных значений. Соответственно, получаем: BOOL LockFile( HANDLE hFile, //хэндл файла DWORD dwFileOffsetLow, //младшее двойное слово смещения DWORD dwFileOffsetHigh,
//старшее двойное слово смещения DWORD nNumberOfBytesToLockLow, //младшее двойное слово длины блокируемой области DWORD nNumberOfBytesToLockHigh //старшее двойное слово длины блокируемой области );
Ответ отправлен: 24.11.2003, 14:54 Отправитель: Gibbel
Вопрос № 1260
Доброго здравия мастерам своего дела!!! Мне надо написать программу, которая работает с листом(листами)EXCEL. В Builder вроде даже есть такие элементы как Excel Workbook и Excel WorkSheet. Подскажите, пожалуйста, как с этим Excel’ем работать? Если можно, с примерчиком. Заранее благодарен Still me, Merovingian
Здравствуйте, Merovingian! Не знаю, как в BC, а Visual C++ с Excel можно работать через OLE, используя директиву #import. Эта директива генерирует C++ обертки для интерфейсов на основе библиотеки типов. Пример см. ниже. С уважением, Avl2k. #include <iostream> #import "C:\Program Files\Microsoft Office\Office\MSO9.DLL" #import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" #import "C:\Program Files\Microsoft Office\Office\Excel9.olb" rename("DialogBox", "_DialogBox") rename("RGB", "_RGB") using namespace Excel; using namespace std; void main() { HRESULT hr = ::CoInitialize( NULL ); if( SUCCEEDED( hr ) ) { try { _ApplicationPtr app; if( SUCCEEDED( app.CreateInstance( L"Excel.Application" ) ) )
{ app->Workbooks->Add(); _WorksheetPtr w = app->Sheets->Add(); app->ActiveCell->FormulaR1C1 = "1111"; } } catch(const _com_error& e) { cout << e.ErrorMessage() << endl; } ::CoUninitialize(); } } Ответ отправлен: 24.11.2003, 19:01 Отправитель: Avl2k Отвечает chebv
Приветствую Вас, Merovingian! http://www.rsdn.ru/article/vcpp/import.xml Ответ отправлен: 24.11.2003, 07:59 Отправитель: chebv
Вопрос № 1261
Добрый день уважаемые Эксперты! Как можно узнать текущий аккаунт пользователя в WinXP? (VC(MFC))
Здравствуйте, Alex! См. здесь. С уважением, Avl2k. Ответ отправлен: 24.11.2003, 18:03 Отправитель: Avl2k
Вопрос № 1262
Доброго времени суток! Подскажите пожалуйста как сделать! Создаю несколько массивов, двумерный и 2 одномерных, а потом хочу передать их в функцию для работы с ними! Их надо передать так, чтобы в функции я их мог изменять, как это сделать? Как затем в функции к ним обращаться? С уважением, ILYA D.
Добрый день, ILYA D.! Скорее всего изменять надо их значения... тогда void f(int ** pMatrix, int * pVectorI, float * pVectorF); Ответ отправлен: 23.11.2003, 18:48 Отправитель: vitya Отвечает chebv
Здравствуйте, ILYA D.! Изменять значения массива в функции просто, т.к. переменная, объявленная как массив, фактически является указателем на первый элемент массива.
Приложение: Ответ отправлен: 24.11.2003, 14:18 Отправитель: chebv
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.