Текущий архив: 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