![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; type PLoadFiles = ^TLoadFiles; TLoadFiles = record NameFile: string; end; var Form1: TForm1; L:TList; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var p:PLoadFiles; begin new(p); p.NameFile:=Memo1.Text; l.Add(p); end; procedure TForm1.FormCreate(Sender: TObject); begin L:=TList.Create; end; procedure TForm1.Button2Click(Sender: TObject); begin L.Free; end; вот пример добавления в TList, но вопрос когда я очищаю его или удаляю элемент, как очистить память занимаемую при создании p? |
#2
|
|||
|
|||
![]() Dispose(P);
Как и любой указатель. Последний раз редактировалось nixel, 06.03.2012 в 19:12. |
#3
|
||||
|
||||
![]() Код:
procedure TForm1.Button2Click(Sender: TObject); begin Dispose(L.Items[0]); l.Delete(0); end; не работает или как перейти то к нему если при создании то не работет Код:
procedure TForm1.Button1Click(Sender: TObject); var p:PLoadFiles; begin new(p); p.NameFile:=Memo1.Text; l.Add(p); Dispose(p); end; Последний раз редактировалось ALexandr555, 06.03.2012 в 19:34. |
#4
|
||||
|
||||
![]() Код:
procedure ... var p: PLoadFiles; begin p := PLoadFiles(L.Items[0]); Dispose(p); L.Delete(0); end; Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#5
|
||||
|
||||
![]() спасибо, вроде ок, а размерность для чего? от утечек?
|
#6
|
|||
|
|||
![]() Цитата:
Только делать это надо в той же процедуре, где он был объявлен. Как ты написал во втором варианте в общем. =) Что конкретно не работает? Что пишет отладчик? |
#7
|
||||
|
||||
![]() Цитата:
предложенное dr. F.I.N. работает |
#8
|
|||
|
|||
![]() Цитата:
Впрочем, раз уже все работает, то это можно считать оффтопом) |
#9
|
||||
|
||||
![]() Цитата:
![]() Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#10
|
||||
|
||||
![]() вообще-то:
Код:
type PLoadFiles = ^TLoadFiles; TLoadFiles = record Num: Integer; NameFile: ShortString; end; var AList: TList; var p: PLoadFiles; begin AList:=TList.Create; New(p); p^.Num:=0; p^.NameFile:='hello'; AList.Add(p); New(p); p^.Num:=1; p^.NameFile:='world'; AList.Add(p); end; begin Dispose(PLoadFiles(AList[1])); Dispose(PLoadFiles(AList[0])); AList.Free; end; begin Memo1.Lines.Add(IntToStr(PLoadFiles(AList[0])^.Num)); Memo1.Lines.Add(PLoadFiles(AList[0])^.NameFile); Memo1.Lines.Add(IntToStr(PLoadFiles(AList[1])^.Num)); Memo1.Lines.Add(PLoadFiles(AList[1])^.NameFile); end; кста, в справке по New это написано: Цитата:
Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 07.03.2012 в 13:14. |
#11
|
||||
|
||||
![]() у меня не работало
Код:
Dispose(AList[0]); Код:
p := PLoadFiles(L.Items[0]); Dispose(p); Код:
New(p); p^.Num:=0; p^.NameFile:='hello'; |
#12
|
||||
|
||||
![]() Цитата:
![]() Ну а про p^ - я даже не глянул. Действительно, нужно работать через ^. Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#13
|
||||
|
||||
![]() ага, про Dispose(PLoadFiles(AList[0])); я сам прозевал) т.к. писал про ^
Пишу программы за еду. __________________ |