motofan logo
11 страниц V  1 2 3 > »         
> 

P2Kapi, Вопросы

Xandre
сообщение 10.3.2005, 10:58


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 24.9.2004
Из: Подольск
Пользователь №: 13 798
Модель телефона: RAZR2 V8 + S9
Прошивка: 44.2BR+RA 0.12

Рейтинг: 25



Люди добрые! Я хочу написать программу, основанную на P2Kapi от Vilko в качестве курсовой. Но столкнулся с некоторыми проблемами в испльзовании функций p2kapi. Если кто может напишите прототипы функций с их типамии параметрами. или скиньте на мыло: xandre@amik.ru
Прикрепленный файл p2kapi.zip   ( 7.95 килобайт ) Кол-во скачиваний: 2747
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
BeZ
сообщение 10.3.2005, 11:17


Moto(sh)Coder
*******

Группа: Разработчики
Сообщений: 1 542
Регистрация: 8.10.2003
Пользователь №: 743
Модель телефона: только не moto

Рейтинг: 788.5



а в чем проблема? там же есть описания функций передаваемых и возвращаемых параметров
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Xandre
сообщение 10.3.2005, 11:41


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 24.9.2004
Из: Подольск
Пользователь №: 13 798
Модель телефона: RAZR2 V8 + S9
Прошивка: 44.2BR+RA 0.12

Рейтинг: 25



Вообще я пишу на Visual C++. Вот фрагмент кода где я пытаюсь вызвать функцию инициации библиотеки:

CString st;

HINSTANCE hLib=NULL;
typedef int(*P2K_Init)();
P2K_Init lp=NULL;
hLib=LoadLibrary("p2kapi.DLL");
typedef int(*P2K_GetStatus)();
P2K_Init lpp=NULL;

if(hLib!=NULL)
{
lp=(P2K_Init)GetProcAddress(hLib,"P2K_Init");
if(lp)
{
if(! P2K_Init(0)){ st.Format("init %d",P2K_Init(0));

AfxMessageBox(st);}

}
lpp=(P2K_GetStatus)GetProcAddress(hLib,"P2K_GetStatus");
if(lpp)
{
if(!(!P2K_GetStatus())){ st.Format("status %d",P2K_GetStatus(0));

AfxMessageBox(st);}

}
FreeLibrary(hLib);
}
else
AfxMessageBox("Не могу найти библиотеку");

Но функция возвращает 0(т.е. инициация не прошла). Следовательно программа не видит телефон.
В описании функций не написаны их типы и типы параметров (например StatusProc что это такое?) поэтому приходится догадываться по контексту.
Вот пример описания функции P2k_Init:
P2K_Init(StatusProc);
Инициализация библиотеки, запуск монитора статуса телефона.
StatusProc - указатель на процедуру, которая будет вызвана при обнаружении/потере
телефона или 0, если вызов процедуры не требуется.
Возващает 0 - если инициализация прошла успешно или -1 в обратном случае.
Процедура StatusProc вызывается библиотекой с одним параметром:
1 если телефон найден или 0 - если потерян.
Ну тип я ещё могу додумать(integer), но где взять StatusProc?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
BeZ
сообщение 10.3.2005, 12:06


Moto(sh)Coder
*******

Группа: Разработчики
Сообщений: 1 542
Регистрация: 8.10.2003
Пользователь №: 743
Модель телефона: только не moto

Рейтинг: 788.5



Цитата(Xandre @ Четверг, 10 Марта 2005, 15:41)
но где взять StatusProc?
*


саму написать, а потом передать на нее указатель
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Booroondook
сообщение 10.3.2005, 12:12


Старый мотокодер
******

Группа: Разработчики
Сообщений: 1 132
Регистрация: 7.7.2003
Из: Москва
Пользователь №: 179
Модель телефона: EM30
Прошивка: R6716_G_71.03.04R

Рейтинг: 303



Цитата(Xandre @ Четверг, 10 Марта 2005, 15:41)
Ну тип я ещё могу додумать(integer), но где взять StatusProc?
*


StatusProc - это процедура, написанная тобой в твоей же программе.
В качестве параметра для функции P2K_Init нужно ставить указатель (пойнтер, адрес) на эту твою процедуру.
Смысл функции P2K_Init в том, что после запуска этой функции при потере или нахождении телефона производится вызов (по адресу) твоей процедуры с передачей ей в качестве параметра 0 или 1.
Значит, пишешь процедуру типа выдачи на экран окошка с надписью "телефон найден" или "телефон потерян". А вид надписи зависит от параметра, который твоей процедуре передан - 1 или 0.
Вот, собственно говоря, и вся хитрость.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Xandre
сообщение 10.3.2005, 12:12


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 24.9.2004
Из: Подольск
Пользователь №: 13 798
Модель телефона: RAZR2 V8 + S9
Прошивка: 44.2BR+RA 0.12

Рейтинг: 25



Что она из себя должна представлять? Такая пойдет:
begin
ShowMessage('Not found');
end;
И это из-за неё комп невидит телефон?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Prusa
сообщение 10.3.2005, 15:26


Опытный
***

Группа: Разработчики
Сообщений: 136
Регистрация: 17.8.2003
Из: Москва
Пользователь №: 453
Модель телефона: ROKR E2

Рейтинг: 80.5



Xandre,

вместо typedef int(*P2K_Init)();
пиши typedef int(*P2K_Init)(void*);

и при вызове указывай параметр 0

выслал те класс.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
max.wiz
сообщение 10.3.2005, 20:59


Мастер
****

Группа: Пользователи
Сообщений: 206
Регистрация: 14.9.2004
Из: МО, г. Наро-Фоминск
Пользователь №: 12 584
Модель телефона: V300 -> V635 -> Z6
Прошивка: ---

Рейтинг: 42.5



В моей проге я инициализировал вот как (асинхронная инициализация):

Код

// Интерфейс
interface
procedure InitLibrary;
var PhoneConnected: Boolean = False;

implementation
// Реализация
var FirstCall: Boolean = True;

procedure f123;
begin if FirstCall=False then
        begin PhoneConnected:=not(PhoneConnected);
                 SetVisibleStatus;
                 exit;
        end;
        FirstCall:=False;
        PhoneConnected:=True;
        SetVisibleStatus;
end;

procedure InitLibrary;
var i: Integer;
begin if FirstCall=False then exit;
        i:=P2K_Init(Addr(f123));
        if i=-1 then
        begin MessageBox(0,'Fatal connection error:  #IL',MB_Caption,MB_ICONSTOP + MB_SYSTEMMODAL);
                 PhoneConnected:=False;
                 exit;
        end;
end;


При запуске программы вызываю InitLibrary.
Потом перед тем как предпринять какое-нить действие с телефоном проверяю значение PhoneConnected = True.
SetVisibleStatus - выставляет индикатор подключения телефона (красный/зелёный круг в строке статуса).
В принципе функция f123 кажись вызывается с параметром типа integer/word/byte (???) (0/1 - (от/под) ключен), но у меня он всегда 0 :(
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Xandre
сообщение 11.3.2005, 8:41


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 24.9.2004
Из: Подольск
Пользователь №: 13 798
Модель телефона: RAZR2 V8 + S9
Прошивка: 44.2BR+RA 0.12

Рейтинг: 25



Тогда ещё вопрос: Что такое "ptr Buffer" в функциях типа File_Read(ptr Buffer, dword Size);? И как узнать размер файла в телефоне(dword Size)?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
BeZ
сообщение 11.3.2005, 9:18


Moto(sh)Coder
*******

Группа: Разработчики
Сообщений: 1 542
Регистрация: 8.10.2003
Пользователь №: 743
Модель телефона: только не moto

Рейтинг: 788.5



Xandre,
сначала получить список файлов, в этом списке - имя (с путем), размер, атрибуты


ptr Buffer - указатель на Buffer, где будут лежать считанные данный

ЗЫ а вообще ты как то невнимательно читаешь хелп к 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 килобайт ) Кол-во скачиваний: 781
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
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() лучше воткнуть паузу в пару секунд перед открытием/чтением файлов с телефона (если ты сразу начинаешь читать файл).
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Prusa
сообщение 13.4.2005, 6:44


Опытный
***

Группа: Разработчики
Сообщений: 136
Регистрация: 17.8.2003
Из: Москва
Пользователь №: 453
Модель телефона: ROKR E2

Рейтинг: 80.5



у меня все нормально скачивает
инициализируешь буфер определенного размера (размер файла)
потом скачиваешь файл в этот буфер
потом очищаешь
закрываешь файл.

Код

char FileName[]="/a/ALARMCLOCK"; //название файла
BYTE *FileBuf; //указатель на буфер для файла
DWORD FileBufSize; //размер буфера (файла)

FileBufSize = 300; //для ALARMCLOCK


if (p2k_GetStatus()){// проверяем подключено ли тело
  if (p2k_FCreate(FileName,0xFFFFFFFF) == 0){//открываем файл без изменения атрибутов

      FileBuf = new BYTE[FileBufSize]; //инициализируем буфер

      if (p2k_FRead(FilBuf,FileBufSize) == 0){ //читаем файл
          //делаем что нить с буфером
      }
      delete[]FileBuf; //очищаем буфер
      p2k_FClose(); //закрываем файл  
  }
}


про volinfo
я его просто инициализирую 1 раз и все зашибись работает.

есть такой недостаток что монитор подключения тела который запускается после вызова Init не убивается вручную, по этому когда выгружаешь библиотеку не закрывая главной проги монитор продолжает работать но память под эту функцию уже очищена, и выскакивает ошибка о невозможности чтения и тд. Vilko сказал что в след версии поправит это.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Xandre
сообщение 14.4.2005, 15:43


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 24.9.2004
Из: Подольск
Пользователь №: 13 798
Модель телефона: RAZR2 V8 + S9
Прошивка: 44.2BR+RA 0.12

Рейтинг: 25



Мне кажется я сойду с ума.
Prusa,
Я попробовал то что ты написал, но он все равно скачивает только один байт evil_zloi; (причем всегда разный :( ). Насколько я понял ты скачал мою программу. Можешь проверить скачку файла на ней? Умоляю! Жду ответа как соловей лета!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Prusa
сообщение 14.4.2005, 17:00


Опытный
***

Группа: Разработчики
Сообщений: 136
Регистрация: 17.8.2003
Из: Москва
Пользователь №: 453
Модель телефона: ROKR E2

Рейтинг: 80.5



для начала открой файл куда будешь записывать с тела в бинарном режиме а не в текстовом.
я делаю так:
в том месте где я писал что делаем че нить с буфером напиши вот это:
Код

FILE *f;
char toFileName[] = "C:\\ALARMCLOCK";  //путь и название файла на диске
if (( f= fopen(toFileName,"w+b")) != 0){ //создание файла с именем toFileName, "w+b" - атрибуты: "w+" - открытие и сброс файла, "b" - бинарный режим
   fwrite(FileBuf,1,FileBufSize,f);         //запись в файл
   fclose(f);                                       //закрытие файла
}

Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Xandre
сообщение 16.4.2005, 14:52


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 24.9.2004
Из: Подольск
Пользователь №: 13 798
Модель телефона: RAZR2 V8 + S9
Прошивка: 44.2BR+RA 0.12

Рейтинг: 25



clap;applo clap;applo clap;applo clap;applo
Prusa,
Нет слов чтобы выразить мою благодарность bigsmile; ! По гроб жизни обязан! Как только смогу повышать рейтинг наклацаю тебе плюсиков! :D
max.wiz Спасибо щас буду пробовать! bigsmile;
clap;applo clap;applo clap;applo
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 26.4.2005, 11:45


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543
Модель телефона: Z3 - Z6
Прошивка: R452B_G_08.02.0DR

Рейтинг: 26



Народ помогите мне плиз. Истинно ли для делфи следующее:

function P2K_Init(p:pointer): Integer;

function P2K_Restart: Integer;

function P2K_GetStatus: Integer;

function File_Close: Integer;

function File_Delete(FileName:string): Integer;

function File_SetPointer(Offset,MoveMethod: Cardinal): Integer;

function File_Count: Integer;

function File_List(var Buffer: array of byte; File_List:String): Integer;

function Seem_Write(SeemNo,RecordNo,StartOffset,Bytes:Cardinal;var Data:array of byte): Integer;

function File_VolInfo(var Buffer: array of byte): Integer;

function Seem_Read(SeemNo,RecordNo,StartOffset,Bytes:Cardinal;var Data:array of byte): Integer;

function File_Create(FileName:String;Attribute:Cardinal): Integer;

function File_Write(var Buffer: array of byte;Size:Cardinal): Integer;

Второе, как блин считать этот гадский seem к примеру 0117_0001, если мона кусочек кода плиз....
Если честно невьезжаю.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
max.wiz
сообщение 26.4.2005, 20:57


Мастер
****

Группа: Пользователи
Сообщений: 206
Регистрация: 14.9.2004
Из: МО, г. Наро-Фоминск
Пользователь №: 12 584
Модель телефона: V300 -> V635 -> Z6
Прошивка: ---

Рейтинг: 42.5



Вот объявления импортируемых процедур из моей программы (всё работает):
Код

// DLL-exported voids
function P2K_Init(voidStatusProc: Pointer): Integer; stdcall; external 'p2kapi.dll';
function P2K_Restart: Integer; stdcall; external 'p2kapi.dll';
function File_Count: Integer; stdcall; external 'p2kapi.dll';
function File_List(var Buf; Count: Longword): Integer; stdcall; external 'p2kapi.dll';
function File_Create(FileName: PChar; Attribute: Integer): Integer; stdcall; external 'p2kapi.dll';
function File_SetPointer(Offset, MoveMethod: Integer): Integer; stdcall; external 'p2kapi.dll';
function File_Read(var Buffer; Size: Integer): Integer; stdcall; external 'p2kapi.dll';
function File_Write(var Buffer; Size: Integer): Integer; stdcall; external 'p2kapi.dll';
function File_Close: Integer; stdcall; external 'p2kapi.dll';
function File_VolInfo(Buffer: PChar): Integer; stdcall; external 'p2kapi.dll';
function Seem_Read(SeemNo, RecordNo, StartOffset, Bytes: Integer; var Data): Integer; stdcall; external 'p2kapi.dll';
function Seem_Write(SeemNo, RecordNo, StartOffset, Bytes: Integer; var Data): Integer; stdcall; external 'p2kapi.dll';


Вот чтение сима из телефона с сохранением в файл - это ОЧЕНЬ просто, проще чем чтение файлов:
(sn - номер сима (если вторая часть = 0001), cnt - размер сима).
Код
function Load_SEEM(sn, cnt: Integer): String;
var n: Integer;
   f: file of byte;
   b: array [0..255] of byte;
   s, seem: String;
begin if PhoneConnected=False then
     begin MessageBox(0,MB_NotConn,MB_Caption,MB_ICONWARNING + MB_SYSTEMMODAL);
           exit;
     end;

     Result:='';
     seem:=IntToHex(sn,4);
     n:=Seem_Read(sn,$0001,0,cnt,b[0]);
     if n=-1 then
     begin MessageBox(0,'SEEM open error. Try again...',MB_Caption,MB_ICONSTOP + MB_SYSTEMMODAL);
           exit;
     end;

     s:=ExtractFilePath(ParamStr(0))+seem+'_0001.seem';
     AssignFile(f,s);
     Rewrite(f);
     BlockWrite(f,b[0],cnt);
     CloseFile(f);
     Result:=s;
end;
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 27.4.2005, 6:01


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543
Модель телефона: Z3 - Z6
Прошивка: R452B_G_08.02.0DR

Рейтинг: 26



clap;applo max.wiz Большущее ТАБЕ спасибо.


;) max.wiz С File_VolInfo на делфях у меня получилось так и пока не глючит.

implementation
var
disk:array[1..128]of Byte;
.......................
Form1.XPLabel11.Caption:=IntToStr(Trunc(File_VolInfo(disk)/1024))+' kb Free';
Form1.XPLabel12.Caption:=Chr(disk[2])+Chr(disk[1])+':';
end;
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Black_hole
сообщение 4.5.2005, 19:16


Новичок
*

Группа: Пользователи
Сообщений: 2
Регистрация: 4.5.2005
Пользователь №: 41 879
Модель телефона: E 398
Прошивка: 98R

Рейтинг: 0



2 Vovan_mail

Form1.XPLabel11.Caption:=IntToStr(Trunc(File_VolInfo(disk)/1024))+' kb Free';

Вот в этой строке ты обращаешся к переменной disk напрямую, хотя она у тебя обявлена массивом, у тебя ошибки нет?
Или у тебя File_VolInfo подругому описан?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
max.wiz
сообщение 4.5.2005, 19:50


Мастер
****

Группа: Пользователи
Сообщений: 206
Регистрация: 14.9.2004
Из: МО, г. Наро-Фоминск
Пользователь №: 12 584
Модель телефона: V300 -> V635 -> Z6
Прошивка: ---

Рейтинг: 42.5



Цитата(Black_hole @ Среда, 4 Май 2005, 22:16)
Form1.XPLabel11.Caption:=IntToStr(Trunc(File_VolInfo(disk)/1024))+' kb Free';

Вот в этой строке ты обращаешся к переменной disk напрямую, хотя она у тебя обявлена массивом, у тебя ошибки нет?
Или у тебя File_VolInfo подругому описан
*



Если описан как
function File_VolInfo(Buffer: PChar): Integer; stdcall; external 'p2kapi.dll';
то ошибки нет - компилятор передаёт по всем правслам. Ведь описание PChar = ^Char, а массив disk - array [] of char и передаёт указатель на disk[<первый элемент>]. Вообще, кастование типов в Дельфях (особенно начиная с 6) намного "гибче". Паскалевский компилятор нашёл бы кучу ошибок :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 4.5.2005, 21:43


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543
Модель телефона: Z3 - Z6
Прошивка: R452B_G_08.02.0DR

Рейтинг: 26



max.wiz Именно так как написал выше. Лучше спрошу чем навтыкаю кучу глюков. С симами блин вроде-бы как разобрался. unsure.gif А вот с списком файлов Это просто пипец. Прошу учесть что кэмп у меня лет 5, а програмировать стал учится совсем недавно. Так вот как я там не втыкивал блин массивы, списка так и не получил. max.wiz rolleyes.gif Дай своё мыло пришлю с исходником своё недомогание или тут выложить? Может чё подскажешь, может чем поможешь.
blink.gif Вот ещё говорят IMEI лежит в 0004_0001.seem я блин перерыл все наверное симы связанные с 4 и хрен его нашол. он прикрыт как-то?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
max.wiz
сообщение 5.5.2005, 4:57


Мастер
****

Группа: Пользователи
Сообщений: 206
Регистрация: 14.9.2004
Из: МО, г. Наро-Фоминск
Пользователь №: 12 584
Модель телефона: V300 -> V635 -> Z6
Прошивка: ---

Рейтинг: 42.5



Насчёт IMEI - не знаю, не искал.

Как получить список:

type
P2KAPI_FileRecord = packed record
Size, Attr: Longword;
Name: array [0..$1F7] of char;
end;


А потом объявляешь массив этимх эелементов:
my_filelist: array of P2KAPI_FileRecord;

При чтении списка файлов, сначала получаешь функцией File_Count количество файлов в телефоне, а потом
SetLength(my_filelist,<количество файлов>)
НО!!!
Индексы начинаются с нуля, поэтому вызов File_List() будет таким:
c:=File_List(my_filelist[0],<количество файлов>);
c - получает результат завершения функции (-1=ошибка, иначе = ОК)
И потом везде используешь my_filelist как массив [0..<количество файлов-1>], например
for c:=0 to Length(my_filelist)-1 do
begin
s:=my_filelist[c].Name;
ShowMessage('Имя файла:'+s);
i:=my_filelist[c].Size;
ShowMessage('Размер: '+IntToStr(i));
i:=my_filelist[c].Attr;
ShowMessage('Атрибуты: '+IntToHex(i,8)+'h');
// ...
end;
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Alex133
сообщение 5.5.2005, 5:42


Заслуженный МотоФанец
********

Группа: Почётные мотофаны
Сообщений: 4 546
Регистрация: 21.6.2004
Из: Москва
Пользователь №: 6 566
Модель телефона: V500, S700
Прошивка: 4FR

Рейтинг: 725



[
Цитата(Vovan_mail @ Четверг, 5 Май 2005, 1:43)
Вот ещё говорят IMEI лежит в 0004_0001.seem
*


Если бы он там лежал, его поменять было бы слишком просто. Он хитро как-то размещен.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 5.5.2005, 6:50


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543
Модель телефона: Z3 - Z6
Прошивка: R452B_G_08.02.0DR

Рейтинг: 26



clap;applo max.wiz Сегодня вечером буду пробовать. Кстати насчёт IMEI не помню какой сим но, что-то 0004 лежит куча цыферок в перемешку. Мона там попробую порыть. max.wiz за инфу спасибо. Мона с твоей помощью и выйдет что-то в свет. Я сам блин вообще не в ту степь лез. drink_drunks;
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 5.5.2005, 9:12


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543
Модель телефона: Z3 - Z6
Прошивка: R452B_G_08.02.0DR

Рейтинг: 26



clap;applo max.wiz clap;applo Виват!!!! тебе - ура заработало!!!!! Короче я пошол drink_drunks; и ещё раз drink_drunks;
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Last
сообщение 5.5.2005, 12:35


X squad : media
*****

Группа: Контент-менеджеры
Сообщений: 576
Регистрация: 14.1.2005
Из: Украина, Мариуполь
Пользователь №: 34 099
Модель телефона: Atrix 4G
Прошивка: CM WB 20/02/12

Рейтинг: 625



max.wiz, если не тяжело выложи на форуме свои программы (последние версии) P2K Menu Editor v2.2, Visual Palette v1.3, OpEdit, а то мне админы зарубили инет... Качает только файлы закинутые на форум.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Black_hole
сообщение 5.5.2005, 18:49


Новичок
*

Группа: Пользователи
Сообщений: 2
Регистрация: 4.5.2005
Пользователь №: 41 879
Модель телефона: E 398
Прошивка: 98R

Рейтинг: 0



Спасибо Vovan_mail и Gopher за полученную информацию, список файлов наконец заработал.

Но вот вопрос:
Список файлов начинается с moto.tcf, и возникает вопрос по какому принципу функция File_List отображает файлы (очевидно не по алфавиту, не по размеру, не по расширению, не по атрибуту) а тогда по какому?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 5.5.2005, 20:47


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543
Модель телефона: Z3 - Z6
Прошивка: R452B_G_08.02.0DR

Рейтинг: 26



Black_hole blink.gif Спасибо не мне а max.wiz он разжевал как это отрулить.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Xandre
сообщение 6.5.2005, 5:11


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 24.9.2004
Из: Подольск
Пользователь №: 13 798
Модель телефона: RAZR2 V8 + S9
Прошивка: 44.2BR+RA 0.12

Рейтинг: 25



Цитата(Black_hole @ Четверг, 5 Май 2005, 21:49)
Спасибо Vovan_mail и Gopher за полученную информацию, список файлов наконец заработал.

Но вот вопрос:
Список файлов начинается с moto.tcf, и возникает вопрос по какому принципу функция File_List отображает файлы (очевидно не по алфавиту, не по размеру, не по расширению, не по атрибуту) а тогда по какому?
*



Не знаю как у тебя, а у меня скачивание идет по папкум(сначала /а/ потом /a/mobile/ и т.д.) Пишу на С++
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 6.5.2005, 12:57


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543
Модель телефона: Z3 - Z6
Прошивка: R452B_G_08.02.0DR

Рейтинг: 26



Xandre rolleyes.gif Да и в делфе так . Видемо Black_hole имел ввиду как отсортированы файлы по какому признаку. У меня так:

/a/ALARMCLOCK
/a/QosProfileFile
/a/iTAP_User_Dictionary
/a/PUSH_DATABASE
/a/j2me15x15icon_VSCL.png
/a/uaprof_url.txt
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 6.5.2005, 13:21


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543
Модель телефона: Z3 - Z6
Прошивка: R452B_G_08.02.0DR

Рейтинг: 26



rolleyes.gif Господа Кодеры. Вопрос: Есть два варианта Получения дерева тела в TreeView при считывании с тела файлов или загружать из специального файла (дополнительно закодированного чтобы не изменяли) типа по профилю. К примеру Е398 юзверь удалил папку Video , так в профеле она будет и не надо будет использовать пути для востановления, так папка уже существует в профеле но она пуста. Ваше мнение как лучше? Извените если ихто-то непонял.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
P2Kapi, Вопросы · Ломаем и строим! · Forum
 

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

 



Текстовая версия Сейчас: 18.7.2025, 3:40

Форум живёт: