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

Вниз

Где в коде ошибка?   Найти похожие ветки 

 
MegaVolt ©   (2003-05-26 13:23) [0]

Почему ниже приведённый код вылетает? (в отдельном виде вылетает через 3 нажатия кнопки а в полном коде вообще при первом обращении.)

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type

Sig=record
Signatura:string;
Len:integer;
Min:integer;
Max:integer;
FixBegin:boolean;
FixEnd:boolean;
end;

WordRec=record
CountSign:integer;
MinWord:integer;
Sign:Array of Sig;
end;

TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Word: array of WordRec;
CountWord:integer;


implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
inc(CountWord);
SetLength(Word,CountWord);
Word[CountWord].CountSign:=0;

Inc(Word[CountWord].CountSign);
{вылетаем тута} SetLength(Word[CountWord].Sign,Word[CountWord].CountSign);
with Word[CountWord].Sign[Word[CountWord].CountSign] do
begin // заполняем начальное значения
Min:=0;
Len:=0;
FixBegin:=false;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
CountWord:=0;
end;

end.

Заранее благодарен


 
MBo ©   (2003-05-26 13:26) [1]

SetLength(Word,CountWord);
последний элемент CountWord-1
а ты делаешь
Word[ CountWord].CountSign:=0;


 
Palladin ©   (2003-05-26 13:26) [2]

уменьшай все count при обращению к массиву на один, массив начинается с нуля


 
MegaVolt ©   (2003-05-26 14:22) [3]

Спасибо большое :( Мог бы и сам понять :(


 
handra ©   (2003-05-26 14:24) [4]

Palladin © (26.05.03 13:26)
уменьшай все count при обращению к массиву на один, массив начинается с нуля

Массив начинается с Low(Word), а последний индекc High(Word)... это чтобы не было потом мучительно больно :(


 
evvcom ©   (2003-05-26 20:55) [5]

Избегай названий типа "Word". В юните Windows уже имеется тип WORD, это в дальнейшем избавит от трудночитаемости, двоякопонимаемости и долгоблуждаемости по написанному. (Во завернул!) Используй лучше, например, WordsArray: array ...


 
Fizmat   (2003-05-27 13:13) [6]

Массив начинается с Low(Word), а последний индекc High(Word)... это чтобы не было потом мучительно больно :(
В Object Pascal"е нижний индекс динамических массивов (а именно такой используется в программе) всегда равен нулю.



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

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

Наверх




Память: 0.48 MB
Время: 0.013 c
14-13403
Jaxtor
2003-05-16 16:39
2003.06.05
Документация по EWwin


1-13284
Vulko
2003-05-17 22:41
2003.06.05
Как вызвать стандартный диалог выбора цвета


14-13399
rosl
2003-05-18 11:59
2003.06.05
запустить приложение


1-13294
vitall
2003-05-24 05:55
2003.06.05
данные местоположения курсора в строке(TMemo etc)


3-13061
Andrio
2003-05-17 13:43
2003.06.05
Очередной глюк FireBird или это можно обойти?