Конференция "Начинающим" » Слайд шоу не работает [D2005, XP]
 
  • Ramzes001 © (31.03.08 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;


    Заранее спасибо!
  • Игорь Шевченко © (31.03.08 11:12) [1]
    РУССКИЙ УЧИТЬ
  • Ramzes001 © (31.03.08 11:17) [2]

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


    А кроме него?
  • Игорь Шевченко © (31.03.08 11:19) [3]
    А кроме него приводить полный код. С исправленными грамматическими ошибками
  • Kolan © (31.03.08 11:22) [4]
    > две переменные в цикле,

    Цикла не видно.
  • Denis__ © (31.03.08 13:11) [5]
    Удалено модератором
  • Ramzes001 © (31.03.08 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;


    Помогите бедному ламеру(((((((
  • Сергей М. © (31.03.08 20:41) [7]
    Ты еще умудрился надругаться над английсиким и над Паскалем.
  • Ramzes001 © (31.03.08 20:45) [8]

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


    Так скажите, что я должен сделать, чтоб Великий Бог Паскаля меня простил?
  • Palladin © (31.03.08 20:47) [9]
    Нууууу... я думаю... не страдать фигней, а использовать PowerPoint... куда круче и эффектней... он своих денег стоит....
  • Сергей М. © (31.03.08 20:49) [10]

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


    Один из грехов он тебе отпустит, если ты не будешь фривольно манипулировать счетчиком итераций for-цикла.
  • Ramzes001 © (31.03.08 20:57) [11]

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


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


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

    Блин, я месяц эту прогу писал, а слайд шоу-это всего лишь примочка.
  • Сергей М. © (31.03.08 21:07) [12]

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


    ПРоблема в том, что ты не знаешь логики работы for-цикла.
    И не надо болтать ерундой)
  • Ramzes001 © (31.03.08 21:16) [13]
    А в чём глюк? С этим циклом работаю давно, таких проблем не было, объясните пожалуйста.
  • Сергей М. © (31.03.08 21:19) [14]
  • {RASkov} © (31.03.08 21:23) [15]
    > [13] Ramzes001 ©   (31.03.08 21:16)

    А вместо prokrut, в цикле, использовать переменную цикла(I) - не сообразил?
    Впрочем это не отвечает на твой вопрос...
    Объясни - зачем каждую итеррацию цикла выстовлять состояние формы?
    Это тоже не ответ...
    Код бредовый.... прямой ответ - не поможет :(
  • Ramzes001 © (31.03.08 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} © (31.03.08 21:45) [17]
    > Объясни - зачем каждую итеррацию цикла выстовлять состояние формы?

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

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

    сообщение WM_PAINT мало того, что имеет низкий приоритет, но и обрабатывается только последнее из очереди...
  • {RASkov} © (31.03.08 21:46) [18]
    > [16] Ramzes001 ©   (31.03.08 21:41)

    Пипец :(
  • Ramzes001 © (31.03.08 21:48) [19]
    {RASkov} Ну что значит "код бредовый"? Всё работает, кроме непосредственно згрузки самой картинки, да и она грузится, но только последняя и после конца выполнения цикла. Я не говорю, что это эталон, но ведь почти всё работает!
  • Сергей М. © (31.03.08 21:50) [20]

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


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


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


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

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

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

    Application.ProcessMessages

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

    Думай. Много.
  • {RASkov} © (31.03.08 21:50) [21]
    > Собственно это не ошибка и ничего страшного не произойдет,
    > об этом позаботились более умные программисты в сеттерах
    > свойств...

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

    ..., но говорит о плохой подготовки "текущего"(в данном случае тебя) (горе)программиста...
  • Ramzes001 © (31.03.08 21:50) [22]
    {RASkov}А как повысить этот приоритет?
  • {RASkov} © (31.03.08 21:54) [23]
    > [19] Ramzes001 ©   (31.03.08 21:48)
    > {RASkov} Ну что значит "код бредовый"?

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

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

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

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

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

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

    Лучше исправь все по нормальному :) Сергей вон тебе подсказал.... но не нужно бездумно вставлять в бредовый код спасительную строчку.
  • {RASkov} © (31.03.08 21:55) [24]
    > [22] Ramzes001 ©   (31.03.08 21:50)

    никак :) Просто это нужно знать и учитывать)
  • DDR (31.03.08 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} © (31.03.08 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} © (31.03.08 22:09) [27]
    > [25] DDR   (31.03.08 22:03)
    > Вот тебе подсказка, но дальше ты сам!

    Да уж... :) Наподсказывал тут не о чем...)
  • DDR (31.03.08 22:23) [28]
    {RASkow}, это же типа толчок :) Человеку нужно понять, а он не может (или не хочет), ну.... я поделился своими мыслями. Может быть, может быть.... я чёта не догнал или лишнее состряпал.
  • Ramzes001 © (31.03.08 22:28) [29]
    Прошу прощения что так долго не писал, просто Нет у меня очень сильно логал. Всем спасибо всё работает просто надо было вставить Application.ProcessMessagesж и всё отлично работает, а вообще значит код был не убитый, протестую, идея была хорошей, ещё раз всем спасибо.
    P.S. В своё оправдание хочу сказать, что мне 15 лет и я-сомоучка.
  • DDR (31.03.08 22:30) [30]
    а мне 27 лет и сАмоучка :)
    Удачи тебе!
  • Сергей М. © (31.03.08 22:30) [31]

    > я-сомоучка


    Интересно, чему ты учишь сомов ?)
 
Конференция "Начинающим" » Слайд шоу не работает [D2005, XP]
Есть новые Нет новых   [134433   +25][b:0][p:0.003]