Для чего нужен буфер я понял, но какого он длжен быть типа?
P2Kapi, Вопросы |
Здравствуйте, гость ( Вход | Регистрация ) |
P2Kapi, Вопросы |
Xandre |
11.3.2005, 9:24
|
Интересующийся Группа: Пользователи Сообщений: 49 Регистрация: 24.9.2004 Из: Подольск Пользователь №: 13 798 Модель телефона: RAZR2 V8 + S9 Прошивка: 44.2BR+RA 0.12 Рейтинг: 25 |
Для чего нужен буфер я понял, но какого он длжен быть типа?
|
max.wiz |
11.3.2005, 9:42
|
Мастер Группа: Пользователи Сообщений: 206 Регистрация: 14.9.2004 Из: МО, г. Наро-Фоминск Пользователь №: 12 584 Модель телефона: V300 -> V635 -> Z6 Прошивка: --- Рейтинг: 42.5 |
Цитата(Xandre @ Пятница, 11 Марта 2005, 12:24) var Buffer: array of byte; а потом в том месте где надо прочитать файл (есть имя + размер файла): SetLength(Buffer, file_size) так мы выделим массив Buffer[0..file_size-1]. В принципе тип массива может быть byte/char (размер = (file_size) ячеек), либо word (размер = (file_size div 2)+1 ячеек), либо longword/integer (размер = (file_size div 4)+1 ячеек), |
BeZ |
11.3.2005, 11:42
|
Moto(sh)Coder Группа: Разработчики Сообщений: 1 542 Регистрация: 8.10.2003 Пользователь №: 743 Модель телефона: только не moto Рейтинг: 788.5 |
Xandre,
просто память нужного размера выделяешь |
KEO |
14.3.2005, 6:30
|
Мастер Группа: Разработчики Сообщений: 258 Регистрация: 18.9.2003 Из: Барнаул Пользователь №: 580 Модель телефона: E398 >> E1 iTunes Прошивка: R373_G_0E.30.42R Рейтинг: 151 |
[code][/code]
|
Xandre |
11.4.2005, 14:41
|
|
Интересующийся Группа: Пользователи Сообщений: 49 Регистрация: 24.9.2004 Из: Подольск Пользователь №: 13 798 Модель телефона: RAZR2 V8 + S9 Прошивка: 44.2BR+RA 0.12 Рейтинг: 25 |
Снова привет! Снова вопросы :) Я наконец-то дошел до закачки и скачки файлов. И опять ступор! Подскажите алгоритм этих процедур, пожааалуйста! Ну ошибка у меня вылетает и все тут! Кстати, чё то у меня еще глючит VolInfo: кнопку эту клацнешь, программа поработает, а когда закроешь программу вылетает системная ошибка про доступ к памяти evil_zloi; Это все притом, что сдавать мне её надо уже в начале мая!
Исходники(Visual C++ MFC)+exeшник прилагаются. Возможно то что я наделал будет интересно новичкам-мотопрограммерам. И еще одно просьба(если отвечать не захотите :) ): выложите,плиз, программку MotoMan(с сырцами). Буду очень благодарен!
| |
Prusa |
11.4.2005, 15:05
|
Опытный Группа: Разработчики Сообщений: 136 Регистрация: 17.8.2003 Из: Москва Пользователь №: 453 Модель телефона: ROKR E2 Рейтинг: 80.5 |
1. для того чтоб открыть файл используй атрибут 0xFFFFFFFF - это будет значить что атрибут у файла не менять.
2. вот ты пишешь в файле mdlg.cpp : Код void *pRead; int i=moto.FCreate(ptr[2].FileName,NULL); s.Format("Create %d", i); AfxMessageBox(s); i=moto.FRead(pRead,ptr[2].FileSize); s.Format("Read %d", i); AfxMessageBox(s); i=moto.FClose(); s.Format("Close %d", i); AfxMessageBox(s); //if p file.open("file.txt",ios::out); file<<pRead<<endl; file.close(); надо чтоб переменная pRead была не не пойми какого типа (в данном случае void) а например BYTE, потом надо ее инициализировать : [/CODE] pRead = new byte[ptr[2].FileSize];[/CODE] и в конце пользования убить. |
Xandre |
11.4.2005, 15:15
|
Интересующийся Группа: Пользователи Сообщений: 49 Регистрация: 24.9.2004 Из: Подольск Пользователь №: 13 798 Модель телефона: RAZR2 V8 + S9 Прошивка: 44.2BR+RA 0.12 Рейтинг: 25 |
Prusa
Cпасибо clap;applo ! щас буду проверять. Извини за нахальство где достать мотоман(ей сайт на народе на работает) |
max.wiz |
12.4.2005, 7:56
|
Мастер Группа: Пользователи Сообщений: 206 Регистрация: 14.9.2004 Из: МО, г. Наро-Фоминск Пользователь №: 12 584 Модель телефона: V300 -> V635 -> Z6 Прошивка: --- Рейтинг: 42.5 |
Xandre,
Prusa, VolInfo - единственная недоработанная функция в библиотеке. File_Read/File_Write получает такие же аргументы и не глючит, а с VolInfo косяк :( Для Дельфей это выглядит вот как: 1) выделение памяти под буффер (array [0..255] of byte); 2) вызов VolInfo; 3) при выходе из текущей процедуры - Exception "Access violation ... at address 0x0000000" (!!!). Если буфер объявить как глобальную переменную, то такая фигня выскакивает при выходе из программы. Источник ошибки - по ходу функция VolInfo сама пытается что-то там освободить :( Решение нашёл, но не сколько "непрямое" (запускать программу из под Дельфей нежелательно или комментить кусок кода): 1) выделение памяти под буфер с помощью GlobalAlloc(); 2) вызод VolInfo; 3) о выделенной памяти ЗАБЫВАЕМ :) При выходе из программы ошибок не возникает (Винда 2000 сама освобождает всю память выделенную программе), но при запуске под Дельфёй, последняя успевает перехватить Exception :( |
Xandre |
12.4.2005, 13:57
|
Интересующийся Группа: Пользователи Сообщений: 49 Регистрация: 24.9.2004 Из: Подольск Пользователь №: 13 798 Модель телефона: RAZR2 V8 + S9 Прошивка: 44.2BR+RA 0.12 Рейтинг: 25 |
2Prusa
Все сделал так как ты сказал. Теперь программа скачивает только первые несколько байт (например скачал gif, получил файл в 7 байт). Проверь у себя на моем исходнике. В чем может быть ошибка? |
max.wiz |
12.4.2005, 22:56
|
Мастер Группа: Пользователи Сообщений: 206 Регистрация: 14.9.2004 Из: МО, г. Наро-Фоминск Пользователь №: 12 584 Модель телефона: V300 -> V635 -> Z6 Прошивка: --- Рейтинг: 42.5 |
Xandre,
File_Read() иногда не дожидается завершения транзакции данных с телефона и возвращает только чать данных. При следующем чтении (даже другого файла), может "дочитаться" кусок предыдущего + заголовок уже нового требуемого файла. В P2KME я читаю блоками по 512 байт. Задержка после вызова File_Read() не поможет :( Да и вообще, после вызова File_List() лучше воткнуть паузу в пару секунд перед открытием/чтением файлов с телефона (если ты сразу начинаешь читать файл). |
Текстовая версия | Сейчас: 31.10.2024, 22:57 |
Форум живёт: