Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.27;
Скачать: CL | DM;

Вниз

Слайд шоу не работает   Найти похожие ветки 

 
Ramzes001 ©   (2008-03-31 11:09) [0]

Всем доброго времени суток!
Почти доделал программу для просмотра изображений и записи на них звука, остался последний штрих: слайд шоу. Но тут меня поджидал сюрприз: хотя звук воспроизводится, заголовок окна меняется, но сами картинки не показываются Там всегото две переменные в цикле, а всё равно глюк(((
Помогите кто чем может, я реально запутался((((( Уже кровавую оскомену набил от этого кода(((((((
 with Image1.Picture do
    begin
      //Загрузка самой картинки
      LoadFromFile(filepach + guber[prokrut]);
      //Развёртование окна вовсю ширину, просто при загрузки картинки оно съежает вниз
      WindowState := wsMaximized;
      //Наполнение заголовка названием фотки
      Caption:=guber[prokrut];
      //Дальше идёт воспроизведение звука
      GetMem(PCh,Length(filepach + guber[prokrut] + ".wav")+1);
      StrPCopy(PCh,filepach + guber[prokrut] + ".wav");
      PlaySound(PCh,0, SND_FILENAME or SND_SYNC);
      //...............................................................
      //Прибавление к счётчику
      prokrut:=prokrut+1;
      //Освобождаем память
      FreeMem(PCh)
    end;
end;

Заранее спасибо!


 
Игорь Шевченко ©   (2008-03-31 11:12) [1]

РУССКИЙ УЧИТЬ


 
Ramzes001 ©   (2008-03-31 11:17) [2]


> <Цитата>
>
>
> Игорь Шевченко ©   (31.03.08 11:12) [1]
> РУССКИЙ УЧИТЬ


А кроме него?


 
Игорь Шевченко ©   (2008-03-31 11:19) [3]

А кроме него приводить полный код. С исправленными грамматическими ошибками


 
Kolan ©   (2008-03-31 11:22) [4]

> две переменные в цикле,

Цикла не видно.


 
Denis__ ©   (2008-03-31 13:11) [5]

Удалено модератором


 
Ramzes001 ©   (2008-03-31 20:35) [6]

Приношу свои извинения за издевательство над русским языком, вот полный код функции:
procedure TformMain.TplayClick(Sender: TObject);
var
i: word;
PCh: Pchar;
begin
for I :=prokrut to neve do

begin
 with Image1.Picture do
    begin
      //Загрузка самой картинки
      LoadFromFile(filepach + guber[prokrut]);
      //Развёртывание окна во всю ширину, просто при загрузке картинки оно съезжает вниз
      WindowState := wsMaximized;
      //Наполнение заголовка названием фотки
      Caption:=guber[prokrut];
      //Дальше идёт воспроизведение звука
      GetMem(PCh,Length(filepach + guber[prokrut] + ".wav")+1);
      StrPCopy(PCh,filepach + guber[prokrut] + ".wav");
      PlaySound(PCh,0, SND_FILENAME or SND_SYNC);
      //...............................................................
      //Прибавление к счётчику
      prokrut:=prokrut+1;
      //Освобождаем память
      FreeMem(PCh)
    end;
end;
end;

Помогите бедному ламеру(((((((


 
Сергей М. ©   (2008-03-31 20:41) [7]

Ты еще умудрился надругаться над английсиким и над Паскалем.


 
Ramzes001 ©   (2008-03-31 20:45) [8]


> Ты еще умудрился надругаться над английсиким и над Паскалем.


Так скажите, что я должен сделать, чтоб Великий Бог Паскаля меня простил?


 
Palladin ©   (2008-03-31 20:47) [9]

Нууууу... я думаю... не страдать фигней, а использовать PowerPoint... куда круче и эффектней... он своих денег стоит....


 
Сергей М. ©   (2008-03-31 20:49) [10]


> Ramzes001 ©   (31.03.08 20:45) [8]


Один из грехов он тебе отпустит, если ты не будешь фривольно манипулировать счетчиком итераций for-цикла.


 
Ramzes001 ©   (2008-03-31 20:57) [11]


> Один из грехов он тебе отпустит, если ты не будешь фривольно
> манипулировать счетчиком итераций for-цикла.


Проблема в том, что счётчик работает нормально, заголовки формы меняются, звук воспроизводится, но фото не грузится.


> Нууууу... я думаю... не страдать фигней, а использовать
> PowerPoint... куда круче и эффектней... он своих денег стоит.
> ...

Блин, я месяц эту прогу писал, а слайд шоу-это всего лишь примочка.


 
Сергей М. ©   (2008-03-31 21:07) [12]


> Проблема в том, что счётчик работает нормально


ПРоблема в том, что ты не знаешь логики работы for-цикла.
И не надо болтать ерундой)


 
Ramzes001 ©   (2008-03-31 21:16) [13]

А в чём глюк? С этим циклом работаю давно, таких проблем не было, объясните пожалуйста.


 
Сергей М. ©   (2008-03-31 21:19) [14]

http://pascal.guti.ru/fornext.html


 
{RASkov} ©   (2008-03-31 21:23) [15]

> [13] Ramzes001 ©   (31.03.08 21:16)

А вместо prokrut, в цикле, использовать переменную цикла(I) - не сообразил?
Впрочем это не отвечает на твой вопрос...
Объясни - зачем каждую итеррацию цикла выстовлять состояние формы?
Это тоже не ответ...
Код бредовый.... прямой ответ - не поможет :(


 
Ramzes001 ©   (2008-03-31 21:41) [16]

Сергей, ошибка не в этом, насколько я понял, Вы имели ввиду то, что
не следует изменять значение управляющей переменной внутри цикла. Но изменив код на следующий: begin
megaguban:= prokrut;
for I :=megaguban to neve do

begin
 with Image1.Picture do
    begin
      //Загрузка самой картинки
      LoadFromFile(filepach + guber[prokrut]);
      //Развёртывание окна во всю ширину, просто при загрузки картинки оно съезжает вниз
      WindowState := wsMaximized;
      //Наполнение заголовка названием фотки
      Caption:=guber[prokrut];
      //Дальше идёт воспроизведение звука
      GetMem(PCh,Length(filepach + guber[prokrut] + ".wav")+1);
      StrPCopy(PCh,filepach + guber[prokrut] + ".wav");
      PlaySound(PCh,0, SND_FILENAME or SND_SYNC);
      //...............................................................
      prokrut:=prokrut+1;
      //Освобождаем память
      FreeMem(PCh)
    end;
end;
end;
Ситуация осталась неизменной, я уверен, что проблема при отображении картинки.


 
{RASkov} ©   (2008-03-31 21:45) [17]

> Объясни - зачем каждую итеррацию цикла выстовлять состояние формы?

Собственно это не ошибка и ничего страшного не произойдет, об этом позаботились более умные программисты в сеттерах свойств...

> но сами картинки не показываются

сообщение WM_PAINT мало того, что имеет низкий приоритет, но и обрабатывается только последнее из очереди...


 
{RASkov} ©   (2008-03-31 21:46) [18]

> [16] Ramzes001 ©   (31.03.08 21:41)

Пипец :(


 
Ramzes001 ©   (2008-03-31 21:48) [19]

{RASkov} Ну что значит "код бредовый"? Всё работает, кроме непосредственно згрузки самой картинки, да и она грузится, но только последняя и после конца выполнения цикла. Я не говорю, что это эталон, но ведь почти всё работает!


 
Сергей М. ©   (2008-03-31 21:50) [20]


> не следует изменять значение управляющей переменной внутри
> цикла


Да, не следует.


> Ситуация осталась неизменной


А что принципиально изменилось ?
Ничто.

Код как был неверным по логике, так им и остался, несмотря на то что отпущен один из "грехов".

Пробуй вставить в тело цикла вызов

Application.ProcessMessages

Ощути разницу.

Думай. Много.


 
{RASkov} ©   (2008-03-31 21:50) [21]

> Собственно это не ошибка и ничего страшного не произойдет,
> об этом позаботились более умные программисты в сеттерах
> свойств...

Черт, не докончил мысль...

..., но говорит о плохой подготовки "текущего"(в данном случае тебя) (горе)программиста...


 
Ramzes001 ©   (2008-03-31 21:50) [22]

{RASkov}А как повысить этот приоритет?


 
{RASkov} ©   (2008-03-31 21:54) [23]

> [19] Ramzes001 ©   (31.03.08 21:48)
> {RASkov} Ну что значит "код бредовый"?

А то и значит...
Это значит, что в голове у тебя совсем не то что нужно :(

> Всё работает

Через каку все работает.... а тебя это к сожалению устраивает :(

> да и она грузится, но только последняя

Они все грузятся, но почитай про сообщение выше...

> Я не говорю, что это эталон, но ведь почти всё работает!

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


 
{RASkov} ©   (2008-03-31 21:55) [24]

> [22] Ramzes001 ©   (31.03.08 21:50)

никак :) Просто это нужно знать и учитывать)


 
DDR   (2008-03-31 22:03) [25]

чё-чё, а ребята правильно говорят: не страдать фигнёй, а включать голову и думать!

Я сам почти ТРИ (!) месяца писал аналогичную прогу, и пару раз переписывал ее "с нуля"!

Вот тебе подсказка, но дальше ты сам!


var
 Form1: TForm1;
 Nomer, i: integer; // для определения позиции списка

procedure TForm1.Next; //листание по списку
begin
Inc (Nomer);
if Nomer > (listbox1.Items.Count-1) then
   Nomer := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 next;
end;
.........
Дальше ты просто ОБЯЗАН думать сам!
Извини.


 
{RASkov} ©   (2008-03-31 22:08) [26]

> [16] Ramzes001 ©   (31.03.08 21:41)
> GetMem(PCh,Length(filepach + guber[prokrut] + ".wav")+1);

И зачем все эти манипуляции с памятью?
Примерно вот как выглядит твой цикл:
//Развёртывание окна во всю ширину, просто при загрузки картинки оно съезжает вниз
WindowState := wsMaximized;
for I :=megaguban to neve do
begin
with Image1.Picture do
   begin
     //Загрузка самой картинки
     LoadFromFile(filepach + guber[i]);
     //Наполнение заголовка названием фотки
     Application.ProcessMessages;
     Caption:=guber[i];
     //Дальше идёт воспроизведение звука
     PlaySound(PChar(filepach + guber[i] + ".wav"), 0, SND_FILENAME or SND_SYNC); //С именем не совсем понятно, но это тебе виднее
   end;
end;
end;


 
{RASkov} ©   (2008-03-31 22:09) [27]

> [25] DDR   (31.03.08 22:03)
> Вот тебе подсказка, но дальше ты сам!

Да уж... :) Наподсказывал тут не о чем...)


 
DDR   (2008-03-31 22:23) [28]

{RASkow}, это же типа толчок :) Человеку нужно понять, а он не может (или не хочет), ну.... я поделился своими мыслями. Может быть, может быть.... я чёта не догнал или лишнее состряпал.


 
Ramzes001 ©   (2008-03-31 22:28) [29]

Прошу прощения что так долго не писал, просто Нет у меня очень сильно логал. Всем спасибо всё работает просто надо было вставить Application.ProcessMessagesж и всё отлично работает, а вообще значит код был не убитый, протестую, идея была хорошей, ещё раз всем спасибо.
P.S. В своё оправдание хочу сказать, что мне 15 лет и я-сомоучка.


 
DDR   (2008-03-31 22:30) [30]

а мне 27 лет и сАмоучка :)
Удачи тебе!


 
Сергей М. ©   (2008-03-31 22:30) [31]


> я-сомоучка


Интересно, чему ты учишь сомов ?)



Страницы: 1 вся ветка

Текущий архив: 2008.04.27;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.021 c
15-1205737121
KSergey
2008-03-17 09:58
2008.04.27
BIOS выдает DMA Error


2-1206983691
Adios
2008-03-31 21:14
2008.04.27
процедура обработки нажатия на кнопку джойстика


15-1202637891
md10
2008-02-10 13:04
2008.04.27
140 v - что делать?


15-1205829243
DVM
2008-03-18 11:34
2008.04.27
Помогите с переводом на русский одной фразы из SDK


2-1207290723
Gydvin
2008-04-04 10:32
2008.04.27
jpeg в цветовом пространстве CMYK