motofan logo
43 страниц V < 1 2 3 4 > »         
> 

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(с сырцами). Буду очень благодарен!
Прикрепленный файл m.rar   ( 266.4 килобайт ) Кол-во скачиваний: 745
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
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() лучше воткнуть паузу в пару секунд перед открытием/чтением файлов с телефона (если ты сразу начинаешь читать файл).
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
P2Kapi, Вопросы · Ломаем и строим! · Forum
 

43 страниц V < 1 2 3 4 > » 
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.3.2024, 13:23

Форум живёт: