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

Вниз

TLIST   Найти похожие ветки 

 
c0pYc@t   (2002-08-05 09:39) [0]

Читаю книгу, а там примерчик

var
List: TList;
Item: Pointer;
Value: Integer;
........

List := TList.Create;
Item := New(Value); //Ошибка здесь
List.Add(Item);
List.Remove(Item);
Dispose(Item);
List.Free;

Подскажите что здесь не так?


 
Юрий Зотов ©   (2002-08-05 09:47) [1]

var
List: TList;
Item: ^Integer; //!!!
........

List := TList.Create;
New(Item); // !!!
List.Add(Item);
List.Remove(Item);
Dispose(Item);
List.Free;

Детали см в справке (New procedure)

P.S. Это кто ж такие книжки пишет?


 
c0pYc@t   (2002-08-05 09:49) [2]

В В Фаронов Delphi6


 
Lord Warlock ©   (2002-08-05 09:53) [3]

Гм, придумалась извращенческая конструкция:

var List: TList;
Item: Pointer;
Value: Integer;
begin
List:=TList.Create;
Value:=10;
Item:=@Value;
List.Add(Item);
ShowMessage(IntToStr(Integer(List.Items[0]^)));
List.Remove(Item);
List.Free;
end;

Просьба покритиковать.


 
Юрий Зотов ©   (2002-08-05 09:55) [4]

Странно. Раньше за Фароновым такого не замечалось. Надеюсь, просто случайная опечатка.


 
MBo ©   (2002-08-05 10:03) [5]

>Lord Warlock
локальная переменная value исчезает при выходе их проц., куда указывает Item?
здесь, конечно, и список локальный, но все же...


 
c0pYc@t   (2002-08-05 10:26) [6]

чего то я совсем с памятью запутался

вот код

unit Unit1;

interface

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

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
List: TList;
Item: ^Integer;


implementation

{$R *.dfm}

begin
List := TList.Create;
Item^ := 10;
New(Item);
List.Add(Item);
{
showmessage(inttostr(list.Items[0])); как мне теперь добраться до элемента?
}
List.Remove(Item);
Dispose(Item);
List.Free;

end.


 
MBo ©   (2002-08-05 10:47) [7]

>Item^ := 10;
>New(Item);

наоборот!

New(Item);
Item^ := 10;
List.Add(Item);
showmessage(inttostr(PInteger(list.Items[i])));



 
Виктор Щербаков ©   (2002-08-05 10:48) [8]


> Item^ := 10;

Что же ты делаешь? Указатель-то не инициализирован!
Вернее инициализирован nil"ом. А обращение к памяти по этому адресу приводит к AV!


 
c0pYc@t   (2002-08-05 12:33) [9]

спасибо, глупые ошибки допускаю :(



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

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

Наверх




Память: 0.48 MB
Время: 0.01 c
6-48240
~GT~
2002-06-01 01:01
2002.08.15
WebBrowser1 WM_COPY


1-48040
Blacki
2002-08-01 12:59
2002.08.15
проблемы с TDateTimePicker в WinXp


3-47917
the-best-officeman
2002-07-28 21:54
2002.08.15
Как поставить в таблицу вместо True(Flase). флажок - CheckBox ?


3-47979
cracovnik
2002-07-26 15:12
2002.08.15
IMAGE in MS SQL SERVER 2000


1-48026
anod
2002-08-03 16:59
2002.08.15
Почему не работает рекурсия?