Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.05.2010, 13:29
DoKZ DoKZ вне форума
Прохожий
 
Регистрация: 24.05.2010
Сообщения: 1
Репутация: 10
По умолчанию Помогите с Exception

Пишу программу для последнего звонка в школе. Фотоальбом и так далее
Вроде все отлично работает, но есть такая тема: Иногда программа вылетает с сообщением Exception тырым пырым - Stack overflow, иногда (раз на раз не приходится). У меня, как у олимпиадного программиста-математика, это ассоциируется или с утонувшей на глубину рекурсией или с Memory Limit'ом. А вот в визуальном программировании не могу понять почему так. Рекурсивных процедур нету.
Кому не лень, посмотрите: http://files.gw.kz/y7retrcdyj.html

Для упрощенного понимания, архитектура папок:
Photos - Фотоальбомы по папкам
PhotosTB - Уменьшенные эскизы фотографий
PhotosInfo - Описание и обложки альбомов
HTML - Пожелания учеников и информация о них
Videos - Слова автора и вступительный ролик

Unit, в котором происходит Exception (форма просмотра фотоальбомов):
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, sSkinProvider, ExtCtrls, jpeg, ComCtrls, sListView, sPanel,
  StdCtrls, sButton, sScrollBar, sLabel, sEdit, sMemo, Buttons,
  sSpeedButton;

type
  TfrmAlbom = class(TForm)
    sSkinProvider1: TsSkinProvider;
    sPanel1: TsPanel;
    photo1: TImage;
    photo2: TImage;
    photo3: TImage;
    photo4: TImage;
    photo5: TImage;
    sScrollBar1: TsScrollBar;
    photos: TListBox;
    big: TImage;
    sPath: TsEdit;
    sButton1: TsButton;
    sCur: TsEdit;
    SpeedButton1: TSpeedButton;
    procedure sScrollBar1Change(Sender: TObject);
    procedure photo1Click(Sender: TObject);
    procedure photo2Click(Sender: TObject);
    procedure photo3Click(Sender: TObject);
    procedure photo5Click(Sender: TObject);
    procedure photo4Click(Sender: TObject);
    procedure sButton1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }
  public

  end;

var frmAlbom: TfrmAlbom;
    path : string;

implementation

uses Unit1;

{$R *.dfm}

procedure ScanDir(StartDir, Mask: String; List: TStrings);
var
SearchRec: TSearchRec;
begin
 List.Clear;
 if Mask = '' then Mask:= '*.*';
 if StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\';
 if FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then
 begin
  repeat
   Application.ProcessMessages;
    if (SearchRec.Attr and faDirectory) <> faDirectory then
     List.Add(Copy(SearchRec.Name,1,length(SearchRec.Name)-4))
    else
    if (SearchRec.Attr and faDirectory) <> 0 then
    begin
    end;
   until FindNext(SearchRec) <> 0;
   FindClose(SearchRec);
 end;
end;


procedure Delay(ms : longint);
var TheTime : LongInt;
begin
 TheTime := GetTickCount + ms;
 while GetTickCount < TheTime do Application.ProcessMessages;
end;

procedure Draw;
var pp:string;
    op:longint;
begin
 pp:=path;
 op:=pos('\Photos\',pp);
 delete(pp,op,8);
 insert('\PhotosTB\',pp,op);

 frmAlbom.photo1.Picture.LoadFromFile(pp+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position-1]+'.jpg');
 frmAlbom.photo2.Picture.LoadFromFile(pp+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position]+'.jpg');
 frmAlbom.photo3.Picture.LoadFromFile(pp+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position+1]+'.jpg');
 frmAlbom.photo4.Picture.LoadFromFile(pp+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position+2]+'.jpg');
 frmAlbom.photo5.Picture.LoadFromFile(pp+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position+3]+'.jpg');
end;

procedure TfrmAlbom.sScrollBar1Change(Sender: TObject);
begin
 Draw;
end;

procedure TfrmAlbom.photo1Click(Sender: TObject);
begin
 Self.big.Picture.LoadFromFile(Path+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position-1]+'.jpg');
 sCur.Text := Path+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position-1]+'.jpg';
end;

procedure TfrmAlbom.photo2Click(Sender: TObject);
begin
Self.big.Picture.LoadFromFile(Path+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position]+'.jpg');
sCur.Text := Path+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position]+'.jpg';
end;

procedure TfrmAlbom.photo3Click(Sender: TObject);
begin
Self.big.Picture.LoadFromFile(Path+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position+1]+'.jpg');
sCur.Text := Path+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position+1]+'.jpg';
end;

procedure TfrmAlbom.photo5Click(Sender: TObject);
begin
Self.big.Picture.LoadFromFile(Path+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position+3]+'.jpg');
sCur.Text := Path+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position+2]+'.jpg';
end;

procedure TfrmAlbom.photo4Click(Sender: TObject);
begin
Self.big.Picture.LoadFromFile(Path+'\'+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position+2]+'.jpg');
sCur.Text := Path+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position+3]+'.jpg';
end;

procedure TfrmAlbom.sButton1Click(Sender: TObject);
begin
 Self.Close;
end;

procedure TfrmAlbom.FormShow(Sender: TObject);
begin
 Path := Self.sPath.Text;

 ScanDir(Path,'*.jpg',Self.photos.Items);
 Self.sScrollBar1.Max := Self.photos.Items.Count - 5;
 Self.sScrollBar1.Position := 1;

 Self.big.Picture.LoadFromFile(Path+frmAlbom.photos.Items[frmAlbom.sScrollBar1.position-1]+'.jpg');

 Draw;
end;

procedure TfrmAlbom.SpeedButton1Click(Sender: TObject);
begin
  winexec(PChar('explorer /select,'+self.sCur.Text),SW_Restore);
end;

end.

P.S. У моего друга не выходит exception. Может, только у меня так? Посмотрите, пожалуйста
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:51.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025