![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TLIST [D6, Win95/98]
c0pYc@t © (2002-08-05 09:39:00)Читаю книгу, а там примерчик
var
List: TList;
Item: Pointer;
Value: Integer;
........
List := TList.Create;
Item := New(Value); //Ошибка здесь
List.Add(Item);
List.Remove(Item);
Dispose(Item);
List.Free;
Подскажите что здесь не так?
c0pYc@t (2002-08-05 12:33:00) [1]спасибо, глупые ошибки допускаю :(
Виктор Щербаков (2002-08-05 10:48:00) [2]
> Item^ := 10;
Что же ты делаешь? Указатель-то не инициализирован!
Вернее инициализирован nil"ом. А обращение к памяти по этому адресу приводит к AV!
MBo (2002-08-05 10:47:00) [3]>Item^ := 10;
>New(Item);
наоборот!
New(Item);
Item^ := 10;
List.Add(Item);
showmessage(inttostr(PInteger(list.Items[i])));
c0pYc@t (2002-08-05 10:26:00) [4]чего то я совсем с памятью запутался
вот код
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:03:00) [5]>Lord Warlock
локальная переменная value исчезает при выходе их проц., куда указывает Item?
здесь, конечно, и список локальный, но все же...
Юрий Зотов (2002-08-05 09:55:00) [6]Странно. Раньше за Фароновым такого не замечалось. Надеюсь, просто случайная опечатка.
Lord Warlock (2002-08-05 09:53:00) [7]Гм, придумалась извращенческая конструкция:
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;
Просьба покритиковать.
c0pYc@t (2002-08-05 09:49:00) [8]В В Фаронов Delphi6
Юрий Зотов (2002-08-05 09:47:00) [9]var
List: TList;
Item: ^Integer; //!!!
........
List := TList.Create;
New(Item); // !!!
List.Add(Item);
List.Remove(Item);
Dispose(Item);
List.Free;
Детали см в справке (New procedure)
P.S. Это кто ж такие книжки пишет?