motofan logo
       
> 

P2k Multimedia Edit, Редактор медиа содержимого

Vovan_mail
сообщение 23.5.2005, 13:03 Закрепленное сообщение!


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



:D Народ мона начать тестить прогу. Да конечно хотелось бы видеть процесс копирования............ Но не волнуйтесь по окончании копирования прога предупредит Вас. Файл в 3м заливался порядка 9 минут.

Вот весь компот (Я не программер я тока учусь) + Sourse

Прикрепленное изображение

Сообщение отредактировал Krav - 15.2.2007, 11:53
Прикрепленный файл P2kMultiEdit.rar   ( 398.95 килобайт ) Кол-во скачиваний: 4380
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 20.5.2005, 7:52


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



:) Мона тестить описание на 2стр>>>>

P2kMultimediaEdit
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Random
сообщение 20.5.2005, 16:04


Музыкант
******

Группа: Почётные мотофаны
Сообщений: 1 066
Регистрация: 28.1.2005
Пользователь №: 36 054
Модель телефона: iPhone 4S

Рейтинг: 921



Я правда программу не смотрел, но вот пару моих замечаний, с котрыми я столкнулся сам, когда делал свою прогу.

Перед заливкой файла надо удалять существующий уже там файл с таким же названием - поскольку если не удалить, то новый файл пишется оверх старого, и сели новй короче то в конце будет кусок старого.
Потом аттрубуты нельзя ставить системный или др. - эти файлы тело не удаляет
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 20.5.2005, 16:27


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



Народ. Просто не вьезжаю как эти функции работают. Пробовал так чтение файла из тела:

примитивно
var
Buf: array of Byte;
begin
SetLength(Buf, ......);
File_Create(.......,......);
File_Write(Buf,....);
File_Close;
И вот здесь уже выдаёт ошибку. Может как то циклом надо?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
creer
сообщение 20.5.2005, 16:45


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

Группа: Пользователи
Сообщений: 63
Регистрация: 7.4.2004
Из: Екатеринбург
Пользователь №: 3 123
Модель телефона: T720i

Рейтинг: 11



Попробуй определенный массив.
Например, array [0..1023] of byte.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
creer
сообщение 20.5.2005, 17:14


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

Группа: Пользователи
Сообщений: 63
Регистрация: 7.4.2004
Из: Екатеринбург
Пользователь №: 3 123
Модель телефона: T720i

Рейтинг: 11



Примерно вот так.
Код

var FileOut:TFileStream;
   MyBuffer: array [0..1023] of byte;
   i:integer;
File_SetPointer(0, 0);
for i:=1 to (TelephoneFileSize div SizeOf(MyBuffer)) do
 begin
   File_Read(MyBuffer, SizeOf(MyBuffer));
   FileOut.WriteBuffer(MyBuffer, SizeOf(MyBuffer));
   File_SetPointer(SizeOf(MyBuffer), 1);
 end;
File_Read(MyBuffer, TelephoneFileSize mod SizeOf(MyBuffer));
FileOut.WriteBuffer(MyBuffer, MyFile.Size mod SizeOf(MyBuffer));


Код

var FileIn:TFileStream;
   MyBuffer: array [0..1023] of byte;
   i:integer;
DeleteFile; //удаляем файл
File_SetPointer(0, 0);
for i:=1 to (TelephoneFileSize div SizeOf(MyBuffer)) do
 begin
   FileIn.ReadBuffer(MyBuffer, SizeOf(MyBuffer));
   File_Write(MyBuffer, SizeOf(MyBuffer));
   File_SetPointer(SizeOf(MyBuffer), 1);
 end;
FileIn.ReadBuffer(MyBuffer, MyFile.Size mod SizeOf(MyBuffer));
File_Write(MyBuffer, TelephoneFileSize mod SizeOf(MyBuffer));


Проверить не могу, телефона нет.
Пишу в блокноте, могу ошибиться.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 21.5.2005, 7:57


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



lol.gif dion, Если быть точным это не конкуренция, так как проги то не комерческие. Почти каждая прога имеет даже здесь на мотофане свой аналог от другого производителя. Это даёт стимул производителю улучшать свой программый продукт, а не сидеть на ж... ровно. Тем более свою прогу буду выкладывать с исходниками. Потому как, продвинутый пользователь должен знать что внутри, и даже подредактировать код программы. А тот кто собрался написать что-то подобное может использовать как образец, хотя может и не совсем удачный. Так что это не конкуренция-это прогресс. :P Ведь тада Vilko с Bezols тоже конкуренты?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G.off
сообщение 21.5.2005, 8:16


Меломан
******

Группа: Пользователи
Сообщений: 1 171
Регистрация: 21.9.2004
Пользователь №: 13 430
Модель телефона: спирали проводов

Рейтинг: 76.5



Vovan_mail,
dion,
да какие притензии, проблемы? всё отлично, чем больше софта будет, тем лучше(правда качественного)
правда насчёт ОpenSourse.... непоявится ли много программ недоделок из за этого?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 21.5.2005, 8:37


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



Цитата(Gopher @ Суббота, 21 Май 2005, 8:16)
правда насчёт ОpenSourse.... непоявится ли много программ недоделок из за этого?
*



:D Я думаю что меньше так как не зная как замутить ту или иную функцию правильно, мона налепить горбатого. А имея образец кода наобород будет меньше ошибок. А если вообще конфликт dll и рук тогда прога просто помрёт как ссылка с 20 закачками и с плохим резюме, но право чела дать ему возможность сотворить и оценить его труд будет не нарушено. Тогда получается зачем Vilko выложил p2kapi.dll - для того что бы мутили. Вот смотри соберётся прог хорошая сотня, и будет выбор, какую прогу для чего использовать? Вот твоя идея довольно таки хорошая отделить Медиа от всей хрени, которую я и поддержал. Вообще я сторонник не монстров
пять в одном, а к примеру прог: SystemEdit, MediaEdit, SeemEdit и т.п. ;)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 22.5.2005, 7:07


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



blink.gif Народ вот какая хрень:

procedure TOne.SaveLabClick(Sender: TObject);
var
Buf: array[0..235]of Byte;
Handle:integer;
begin
File_Delete('/a/mobile/picture/Scheme.gif');
SizeSave:=GetFileSize('C:\Scheme.gif');
Handle:=FileOpen('C:\Scheme.gif',fmOpenReadWrite);
FileRead(Handle,Buf,SizeSave);
File_Create('/a/mobile/picture/Scheme.gif',0);
File_Write(Buf,SizeSave-1);
FileClose(Handle);
File_Close;
end;

Таким вот образом работает безспорно и чётко, тобишь когда выделяешь чётко буфер по размеру файла. Но если делаешь это как динамический массив:
procedure TOne.SaveLabClick(Sender: TObject);
var
Buf: array of Byte;
Handle:integer;
begin
File_Delete('/a/mobile/picture/Scheme.gif');
SizeSave:=GetFileSize('C:\Scheme.gif');
Handle:=FileOpen('C:\Scheme.gif',fmOpenReadWrite);
SetLength(Buf,SizeSave);
FileRead(Handle,Buf,SizeSave);
File_Create('/a/mobile/picture/Scheme.gif',0);
File_Write(Buf,SizeSave-1);
FileClose(Handle);
File_Close;
end;
zootaz; Вылетает в ошибку, кто знает в чём фишка? Может dll не рулит с динамическими массивами?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
creer
сообщение 22.5.2005, 8:05


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

Группа: Пользователи
Сообщений: 63
Регистрация: 7.4.2004
Из: Екатеринбург
Пользователь №: 3 123
Модель телефона: T720i

Рейтинг: 11



При чтении нельзя использовать массив неопределенной длины (ака динамический).

Попробуй так:
Код
procedure TOne.SaveLabClick(Sender: TObject);
var
Buf: array [0..1023] of Byte;
Handle:THandle;
i:word;
begin
File_Delete('/a/mobile/picture/Scheme.gif');
SizeSave:=GetFileSize('C:\Scheme.gif');
Handle:=FileOpen('C:\Scheme.gif',fmOpenRead);
File_Create('/a/mobile/picture/Scheme.gif',0);
//Записываем в цикле
for i:=1 to (SizeSave div SizeOf(Buf)) do
begin
  FileRead(Handle,Buf,SizeOf(Buf));
  File_Write(Buf,SizeOf(Buf));
  File_SetPointer(SizeOf(Buf), 1); //Хотя это возможно не надо
end;
//Дописываем то, что меньше buf
  FileRead(Handle,Buf,SizeSave mod SizeOf(Buf));
  File_Write(Buf,SizeSave mod SizeOf(Buf));
FileClose(Handle);
File_Close;
end;


Или так:
Код
var FileIn:TFileStream;
  MyBuffer: array [0..1023] of byte;
  i:integer;
begin
File_Delete('/a/mobile/picture/Scheme.gif');
FileIn:=TFileStream.Create('C:\Scheme.gif', fmOpenRead);
File_Create('/a/mobile/picture/Scheme.gif',0);
File_SetPointer(0, 0); //Наверно надо
for i:=1 to (FileIn.Size div SizeOf(MyBuffer)) do
begin
  FileIn.ReadBuffer(MyBuffer, SizeOf(MyBuffer));
  File_Write(MyBuffer, SizeOf(MyBuffer));
  File_SetPointer(SizeOf(MyBuffer), 1); //Наверно надо
end;
FileIn.ReadBuffer(MyBuffer, FileIn.Size mod SizeOf(MyBuffer));
File_Write(MyBuffer, FileIn.Size mod SizeOf(MyBuffer));
FileIn.Free;
File_Close;
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 22.5.2005, 9:20


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



creer, :D В таком виде работает , но опять токи с ошибкой. Файл в теле получается не 235 б, а 0,99кб, тоесть после 235байт забивается мусором до полного размера буфера. Реакция файл закачивается и прога висит.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
creer
сообщение 22.5.2005, 9:53


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

Группа: Пользователи
Сообщений: 63
Регистрация: 7.4.2004
Из: Екатеринбург
Пользователь №: 3 123
Модель телефона: T720i

Рейтинг: 11



Если телефон из сервиса в понедельник вечером вернется, тогда обязательно проверю на телефоне.
А пока попробуй так со своим файлом (235 байт):
Код
var FileIn:TFileStream;
 MyBuffer: array [0..1023] of byte;
 i:integer;
begin
File_Delete('/a/mobile/picture/Scheme.gif');
FileIn:=TFileStream.Create('C:\Scheme.gif', fmOpenRead);
File_Create('/a/mobile/picture/Scheme.gif',0);

{File_SetPointer(0, 0); //Наверно надо
for i:=1 to (FileIn.Size div SizeOf(MyBuffer)) do
begin
 FileIn.ReadBuffer(MyBuffer, SizeOf(MyBuffer));
 File_Write(MyBuffer, SizeOf(MyBuffer));
 File_SetPointer(SizeOf(MyBuffer), 1); //Наверно надо
end;}

FileIn.ReadBuffer(MyBuffer, FileIn.Size mod SizeOf(MyBuffer)); //FileIn.Size mod SizeOf(MyBuffer) = 235
File_Write(MyBuffer, FileIn.Size mod SizeOf(MyBuffer));
FileIn.Free;
File_Close;

Должно залиться только 235 байт.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 22.5.2005, 10:22


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



:D creer, Всё равно блин выдаёт ошибку. Слушай насчёт массива, если файл подразумевается загнать в тело к примеру 1.5 метра ведь с дуру мона.....
как тогда?, какой массив выделить, надо как то делать всё таки динамический массив как думаешь?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
creer
сообщение 22.5.2005, 11:23


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

Группа: Пользователи
Сообщений: 63
Регистрация: 7.4.2004
Из: Екатеринбург
Пользователь №: 3 123
Модель телефона: T720i

Рейтинг: 11



А если на флешку фильм загнать 200 Мб? Его в память весь загружать нежелательно :)
Динамический массив при чтении файлов использоать тельзя.
У меня выделяется массив-буфер размером в 1 килобайт и через него в телефон отправляются данные также по одному килобайту. При копиравании файлов на жестком диске этот кусок кода работает без проблем.
for i:=1 to (FileIn.Size div SizeOf(MyBuffer)) do
определяем число проходов чтения - записи, затем циклически читаем - записываем.
FileIn.ReadBuffer(MyBuffer, FileIn.Size mod SizeOf(MyBuffer));
File_Write(MyBuffer, FileIn.Size mod SizeOf(MyBuffer));
Дописываем остатки файла, которые меньше буфера.
File_SetPointer(SizeOf(MyBuffer), 1);
Вот насчет этого сомневаюсь, я не знаю смещается указатель сам после записи или его надо двигать вручную. Если сам смещается (как при чтении в файла в windows'е) тогда эту строку необходимо убрать.
Поробуй побайтную запись, медлено работать должна, но работать будет наверное.
Напиши какую ошибку выдает.
Попробуй файл побольше записать. Или размер буфера меньше сделай, например 32 а не 1024.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 22.5.2005, 17:43


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



clap;applo creer, :P Короче победил я эту хрень используя всё таки динамический массив. Задолбался полный пипец. Работает и не глючит, плохо только, прогресс бар привязать не к чему. Так как циклов нет. rolleyes.gif Буду теперь заниматся сексов с получением файлов из тела.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
creer
сообщение 22.5.2005, 19:14


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

Группа: Пользователи
Сообщений: 63
Регистрация: 7.4.2004
Из: Екатеринбург
Пользователь №: 3 123
Модель телефона: T720i

Рейтинг: 11



А попробуй загрузить файл размером мегабайта 1,5 - 2. Должно вылезти переполнение стека. ;) (Если сделано без изврата :) )
Да с прогресс-баром выходит сложность. Можно его сделать при копировании нескольких файлов.
А как сделал? Интересно...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 22.5.2005, 20:15


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



ph34r.gif creer Я всё таки извращенец хренов. :P :P Вот хрен ты угадал. Тестттт!!!!!! Файл BONEY M gary go home.mp3 продолжительность 3.20 128кбит/с 3122кб
starwars_draka; Прога пыжилась почти 9 минут, выдала ок!!!!!
Файл закачан без ошибок. Код тебе уже послал.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 24.5.2005, 10:02


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



:( А резюме??????. blink.gif Ни кто не тестил?








rolleyes.gif Сам себе отвечу : Вот хрен тебе :P .

Сообщение отредактировал Vovan_mail - 29.5.2005, 14:32
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
TEQUILA
сообщение 31.5.2005, 20:11


Властелин колец
******

Группа: Почётные мотофаны
Сообщений: 835
Регистрация: 2.10.2004
Из: Смоленск
Пользователь №: 14 898
Модель телефона: iPhone 8
Прошивка: 11
Победитель конкурса 2008


Настроение:
денег нет, но мы держимся тут...



Рейтинг: 643



Vovan_mail,
по-моему, интерфейс слишком на любителя.
Картинки шлет. Музыку я кидаю через МПТ, чтоб профили сохранять, так что тут не скажу.
Пасиба за сорцы,попробую переработать интерфейс немного (можно?) ;)

Конкретно погоняю ее завтра, потом отпишусь :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 1.6.2005, 13:42


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



:( Народ так как глюков скока, кто нашёл. Нужно же веть для продолжения дел.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Волк
сообщение 15.6.2005, 1:14


Новичок
*

Группа: Пользователи
Сообщений: 10
Регистрация: 12.11.2004
Пользователь №: 20 673
Модель телефона: C380
Прошивка: 23r

Рейтинг: 3.5



Vovan_mail, Прикольная программа, классный интерфейс НО:
Я тоже решил написать программу для работы с файлами и столкнулся с проблемой - если скачивать файлы в телефон и использовать в роли буфера масив динамический то при скачивании большого кол-ва файлов выскакивает сообщение "Out of memory" - советую использовать статический массив - это даст кучу преимущств - можно будет показывать прогресс закачивания- скачивания, память будет исп . более рационально.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 15.6.2005, 12:36


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



Цитата(Волк @ Среда, 15 Июня 2005, 1:14)
большого кол-ва файлов выскакивает сообщение "Out of memory"
*


:P Фишка такая всё прекрасно рулит попробуй так
Тобишь есть цыкл, а в конце то цикла надо буфер то очистить, таким образом
Например Buf:=nil; Иначе буфер то не без размерный.
А по поводу памяти я не согласен, так как в динамическом массиве выделяется столько памяти скока надо, не больше не меньше. Про индикацию. Файлы то ты разматываешь опять таки циклом.
begin
for i:=1 to CountFile do begin Количество файлов для скачивания
.........
....... тут обрабатываем это дело
........
.......
ProgressBar1.Position:=i; Присвоим позиции прогрессу номер скачиваемого файла
Lebel1.Caption:=FileSave; Тут имя скачиваемого файла.
Application.ProcessMessages(); Не зависим от выполнения задачи
Buf:=nil; Очищаем буфер
end;
Примерно таким образом, сам файл по байтам индицировать попробую покавырять функцию BlockRead, мона там что пришурупить можна
типа этого
function....... :integer;
begin
Result:=0;
for i:=1 to.......begin
Result:=i;
end;
Result:=0;
end;
короче смотреть надо. Кавырять родную Делфю. И не боятся.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
FatumNNM
сообщение 15.6.2005, 19:51


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

Группа: Пользователи
Сообщений: 37
Регистрация: 6.5.2005
Пользователь №: 41 952
Модель телефона: Motorola L6 (Black)
Прошивка: R3443H1_G_0A.65.0BR

Рейтинг: 0



2 ALL Здравствуйте, у меня проблема с закачкой видео (иммено его), качаю фотки и MP3 -Всё ОК, а видео закачивается - но при открытии пишит, что файл повреждён.
Листинг:

Buffer: array [0..2048] of byte;
********************************
repeat
iBytesRead := FileRead(iFileHandle, Buffer, 2048);
File_Write(Buffer,2048);
until 2048<>iBytesRead;
File_Write(Buffer,iBytesRead);
file_close;fileclose(iFileHandle);


И ещё: КАК СДЕЛАТЬ, ЧТОБЫ РАБОТАЛ ПРОГРЕССБАР (Желательно листинг) ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G.off
сообщение 16.6.2005, 5:44


Меломан
******

Группа: Пользователи
Сообщений: 1 171
Регистрация: 21.9.2004
Пользователь №: 13 430
Модель телефона: спирали проводов

Рейтинг: 76.5



FatumNNM,
Размер буфера маловать(мп3 и картинки занимают мало, т.е. помещаются, видео больше), сделай побольше или динамический попробуй
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dimichxp
сообщение 16.6.2005, 8:00


Ветеран
*****

Группа: Разработчики
Сообщений: 639
Регистрация: 8.2.2005
Из: г. Иркутск
Пользователь №: 36 596
Модель телефона: zn5, e8
Прошивка: 00.28I, 02.07R
Победитель конкурса 2008

Рейтинг: 500



FatumNNM,

Код корявый.

Я бы зделал так:
Код

Const buffSize = 2048;
---
buffer: array [1..buffSize] of byte;
---
iBytesRead := 1;
While (iBytesRead<>0) do
Begin
       iBytesRead := FileRead(iFileHandle, Buffer, buffSize);
       File_Write(Buffer,iBytesRead);
End


Делфи нет, телефона нет, проверить не начем но я думаю работать будет.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 16.6.2005, 8:14


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



Цитата(dimichxp @ Среда, 15 Июня 2005, 15:01)
Интересно сказано
*


:) Работает только в динамическом массиве, как и Length(buf,255);
У меня сейчас нет компа выхожу из интернет клуба, делфей тоже нет, покавырять не где, дело труба. Динамический массив работает чётко, только проблема с индикацией процесса, тут надо искать решение в в *.pas ах самой делфи.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dimichxp
сообщение 16.6.2005, 8:28


Ветеран
*****

Группа: Разработчики
Сообщений: 639
Регистрация: 8.2.2005
Из: г. Иркутск
Пользователь №: 36 596
Модель телефона: zn5, e8
Прошивка: 00.28I, 02.07R
Победитель конкурса 2008

Рейтинг: 500



Vovan_mail,

А какие именно проблемы с индикацией процесса?

PS с динамичискими буферами поосторожнее, вдруг памяти не хватит.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 16.6.2005, 8:44


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



Цитата(dimichxp @ Четверг, 16 Июня 2005, 8:28)
А какие именно проблемы с индикацией процесса?

PS с динамичискими буферами поосторожнее, вдруг памяти не хватит.
*


Вот пример кода чуть урезал, но суть оставил
procedure TOne.LoadLabClick(Sender: TObject);
var
Buf: array of Byte;
SizeF:integer;
f:File of byte;
SavePach,OpenFile,Name:String;
begin
File_Delete(SavePach);
AssignFile(f,OpenFile);
Reset(f);
SizeF:=FileSize(f);
SetLength(Buf,SizeF+1);
BlockRead(f,Buf[0],SizeF);
File_Create(SavePach,4);
File_Write(Buf,SizeF-1);
CloseFile(f);
File_Close;
buf:=nil;
end;
Вот так работает вроде как чётко, но куда тут прогресс впереть?
И в этом случае переполнения памяти не будет, мы чётко освобождаем буфер в конце процедуры.
Конечно если не взять файл соизмеримый с размером Винта.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 16.6.2005, 9:10


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



:) dimichxp,
:P Дима Кэмп вроде тогда сам должен использовать файл подкачки, если уж не хватает физической памяти. Правда я такой программер, но если смотреть реально на вещи должно быть так.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 16.6.2005, 9:53


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



:P dimichxp, Так он то в влюбом случае используется и от этого не куда не денешься. Вот попробуй отключи файл подкачки, и поработай в режиме хорошей загрузки, компа , во байда начнётся..... .
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dimichxp
сообщение 16.6.2005, 10:01


Ветеран
*****

Группа: Разработчики
Сообщений: 639
Регистрация: 8.2.2005
Из: г. Иркутск
Пользователь №: 36 596
Модель телефона: zn5, e8
Прошивка: 00.28I, 02.07R
Победитель конкурса 2008

Рейтинг: 500



Vovan_mail,

Хехе, приходи смотреть :) Ограничил системную память в 128мб, убрал своп-раздел. Работает!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 16.6.2005, 10:07


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



:) ОК, но скорость работы должна упасть, теоретически. Короче на это надо забить, а то на флуд начинает походить блин. Просто надо реальное искать решение для функций и опробовать массу вариантов. Динамический или статический буфер какая там х... разница главное чтобы чётко работало и не глючило при любом размере файла и количестве оных. :P А лучше попробовать научиться загонять файло через модем как это делает PhoneMobileTools, вот фишка бы была, а.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 16.6.2005, 12:52


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



Цитата(FatumNNM @ Четверг, 16 Июня 2005, 11:21)
как его сделать работаюшим
*


Каким путём пошёл кинь кусок кода где закачиваешь или скачиваешь файло. Миром посмотрим и придумаем чаво нибудь. Кстати кто знает как отследить, перехватить команды посылаемые на модем прогой. Очень хочется посмотреть как МРТ это делает.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Vovan_mail
сообщение 20.6.2005, 8:39


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 20.12.2004
Из: г. Смоленск
Пользователь №: 28 543

Рейтинг: 26



FatumNNM, Сейчас у меня нет кэмпа, выхожу с интернет клуба, тобишь делфей нет. На абум как то не люблю писать не проверив это дело.

Попробую просто подсказать а ты попробуй прорулить
Buffer: array [0..2048] of byte;
********************************
//
Здесь получить размер файла и присвоить его прогрессбару
Maх позиции.
//
repeat
iBytesRead := FileRead(iFileHandle, Buffer, 2048);
File_Write(Buffer,2048);
until 2048<>iBytesRead;
File_Write(Buffer,iBytesRead);
file_close;fileclose(iFileHandle);
//
А тут возможно так
ProgressBar1.Position:=ProgressBar1.Position+1;
//
Я не уверен так как сам новичок.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

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

 



Текстовая версия Сейчас: 12.6.2025, 21:00

Форум живёт: