Форум по 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 (форма просмотра фотоальбомов):
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
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, время: 02:52.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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