MotoFan.Ru — всё для Motorola > Лаборатория > Программы для заливки изображений, мелодий, скинов и прочего контента

P2k Multimedia Edit Полная версия
Страницы: 1, 2

 av Vovan_mail

 20.5.2005, 7:52

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

P2kMultimediaEdit

 av Random

 20.5.2005, 16:04

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

Перед заливкой файла надо удалять существующий уже там файл с таким же названием - поскольку если не удалить, то новый файл пишется оверх старого, и сели новй короче то в конце будет кусок старого.
Потом аттрубуты нельзя ставить системный или др. - эти файлы тело не удаляет

 av Vovan_mail

 20.5.2005, 16:27

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

примитивно
var
Buf: array of Byte;
begin
SetLength(Buf, ......);
File_Create(.......,......);
File_Write(Buf,....);
File_Close;
И вот здесь уже выдаёт ошибку. Может как то циклом надо?

 av creer

 20.5.2005, 16:45

Попробуй определенный массив.
Например, array [0..1023] of byte.

 av creer

 20.5.2005, 17:14

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

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));


Проверить не могу, телефона нет.
Пишу в блокноте, могу ошибиться.

 av Vovan_mail

 21.5.2005, 7:57

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

 av G.off

 21.5.2005, 8:16

Vovan_mail,
dion,
да какие притензии, проблемы? всё отлично, чем больше софта будет, тем лучше(правда качественного)
правда насчёт ОpenSourse.... непоявится ли много программ недоделок из за этого?

 av Vovan_mail

 21.5.2005, 8:37

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



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

 av Vovan_mail

 22.5.2005, 7:07

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 не рулит с динамическими массивами?

 av creer

 22.5.2005, 8:05

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

Попробуй так:
Код
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;

 av Vovan_mail

 22.5.2005, 9:20

creer, :D В таком виде работает , но опять токи с ошибкой. Файл в теле получается не 235 б, а 0,99кб, тоесть после 235байт забивается мусором до полного размера буфера. Реакция файл закачивается и прога висит.

 av creer

 22.5.2005, 9:53

Если телефон из сервиса в понедельник вечером вернется, тогда обязательно проверю на телефоне.
А пока попробуй так со своим файлом (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 байт.

 av Vovan_mail

 22.5.2005, 10:22

:D creer, Всё равно блин выдаёт ошибку. Слушай насчёт массива, если файл подразумевается загнать в тело к примеру 1.5 метра ведь с дуру мона.....
как тогда?, какой массив выделить, надо как то делать всё таки динамический массив как думаешь?

 av creer

 22.5.2005, 11:23

А если на флешку фильм загнать 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.

 av Vovan_mail

 22.5.2005, 17:43

clap;applo creer, :P Короче победил я эту хрень используя всё таки динамический массив. Задолбался полный пипец. Работает и не глючит, плохо только, прогресс бар привязать не к чему. Так как циклов нет. rolleyes.gif Буду теперь заниматся сексов с получением файлов из тела.

 av creer

 22.5.2005, 19:14

А попробуй загрузить файл размером мегабайта 1,5 - 2. Должно вылезти переполнение стека. ;) (Если сделано без изврата :) )
Да с прогресс-баром выходит сложность. Можно его сделать при копировании нескольких файлов.
А как сделал? Интересно...

 av Vovan_mail

 22.5.2005, 20:15

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

 av Vovan_mail

 23.5.2005, 13:03

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

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

Нажмите для просмотра прикрепленного файла

 av Vovan_mail

 24.5.2005, 10:02

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








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

 av TEQUILA

 31.5.2005, 20:11

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

Конкретно погоняю ее завтра, потом отпишусь :)
Страницы: 1, 2

Полная версия:


MotoFan.ru (©) 2024    Слушать Radio