Tstrings вызывает SIGSEGV

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
alien308
новенький
Сообщения: 18
Зарегистрирован: 25.08.2012 09:37:47

Tstrings вызывает SIGSEGV

Сообщение alien308 »

сообщение о ошибке:

Код: Выделить всё

Проект project1 вызвал класс исключения 'External: SIGSEGV'.
 В файле 'unit1.pas' на строке 39:
n := ports.Count;


код

Код: Выделить всё

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
    Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;

type

    { TForm1 }

    TForm1 = class(TForm)

        ports: TStrings;  {определяем}

        procedure FormCreate(Sender: TObject);
    private
        { private declarations }
    public
        { public declarations }
    end;

var
    Form1: TForm1;


implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var
    n: integer;
begin
  n := ports.Count;  {ошибка}

end;

end.


Добавлено спустя 15 минут 25 секунд:
1. Нужно использовать не TStrings, а его реализацию ТStringList.
2. Перед использованием вызвать конструктор ports := TStringList.Create;
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Нужна проверка на несовпадение Count с -1. и выход из процедуры обработки если это так.

Как я понял, это касается всех списков.
wavebvg
постоялец
Сообщения: 355
Зарегистрирован: 28.02.2008 03:57:35

Сообщение wavebvg »

alien308 писал(а):1. Нужно использовать не TStrings, а его реализацию ТStringList.
2. Перед использованием вызвать конструктор ports := TStringList.Create;

3. Удалять объект
Ответить