Главная страница
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.014 c
4-48376
stainer
2002-06-12 16:11
2002.08.15
веб на рабочем столе


1-48048
Runser
2002-08-03 15:18
2002.08.15
MS Word


3-47983
Glonia Zbanov
2002-07-26 15:24
2002.08.15
Передача данных


1-48089
Aydar
2002-08-05 03:12
2002.08.15
Как определить размер проги


3-47941
goshavt
2002-07-25 15:27
2002.08.15
Есть ли компоненты для доступа к Oracle и MS SQL без BDE