|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Перенести элементы в Memo
Помогите перенести элементы в мемо в очередности, которую задает пользователь. Есть Listbox, в котором просто отображаются элементы, которые мы вводим и есть мемо, в которое должны переноситься элементы с листбокса только в правильной очередености. Это двусвязный список и в data хранится информация про предыдущий и следующий элемент.
Я думала как-то так записать, но выдает ошибку: Код:
procedure TForm1.Button10Click(Sender: TObject); var L: dlistVar; p : pdlistEl; begin p:=L.head; memo1.lines.add(listbox1.items[p.data]) end; Вот весь код: Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type PdlistEl = ^dlistEl; dlistEl = record next : PdlistEl; prev : PdlistEl; data : integer; end; dlistVar = record head : PdlistEl; tail : PdlistEl; count : cardinal; end; TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; ListBox1: TListBox; Button2: TButton; Button3: TButton; Button4: TButton; Button7: TButton; Label1: TLabel; Label2: TLabel; Button6: TButton; SaveDialog1: TSaveDialog; OpenDialog1: TOpenDialog; Button5: TButton; Button8: TButton; Button9: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Edit1KeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure l_init (var L:dlistVar); begin L.head:=nil; L.tail:=nil; L.count:=0; end; procedure l_push_front ( var L:dlistVar; v:integer); var p: PdlistEl; begin new(p); p^.data:=v; p^.prev:=nil; p^.next:=L.head; L.head:=p; inc(L.count); if p^.next<>nil then p^.next^.prev:=p else L.tail:=p; end; procedure l_push_back ( var L:dlistVar; v:integer); var p:pdlistEl; begin new(p); p^.data:=v; p^.next:=nil; p^.prev:=L.tail; L.tail:=p; inc(L.count); if p^.prev<>nil then p.prev.next:=p else L.head:=p; end; procedure l_insert_before( var L : dlistVar; e : PdlistEl; v : integer ); var p : PdlistEl; begin if e = L.head then l_push_front ( L, v ) else begin new ( p ); p^.data := v; p^.next := e; p^.prev :=e.prev; inc ( L.count ); e.prev.next:=p; e.prev:=p; end; end; procedure l_insert_after ( var L : dlistVar; e : PdlistEl; v : integer ); var p : PdlistEl; begin if e = L.tail then l_push_back ( L, v ) else begin new ( p ); p^.data := v; p^.next := e^.next; p^.prev := e; inc ( L.count ); e^.next^.prev := p; e^.next := p; end; end; procedure l_pop_front ( var L : dlistVar ); begin if L.count > 0 then l_remove ( L, L.head ); end; procedure l_pop_back ( var L : dlistVar ); begin if L.count > 0 then l_remove ( L, L.tail ); end; procedure l_printl ( var L : dlistVar ); var p : pdlistEl; begin p :=L.head; while (p <> nil) do begin Form1.ListBox1.Items.Add(IntToStr(p^.data)); p := p^.next; end; end; procedure TForm1.Button1Click(Sender: TObject); var L : dlistVar; begin l_init(L); l_push_front(L,strtoint(Edit1.text)); l_printl(L); end; procedure TForm1.Button2Click(Sender: TObject); var L : dlistVar; begin l_init(L); l_insert_before(L,L.tail,strtoint(Edit1.text)); l_printl(L); end; procedure TForm1.Button3Click(Sender: TObject); var L : dlistVar; begin l_init(L); l_insert_after(L,L.head,strtoint(Edit1.text)); l_printl(L); end; procedure TForm1.Button4Click(Sender: TObject); var L : dlistVar; begin l_init(L); l_push_back(L,strtoint(Edit1.text)); l_printl(L); end; procedure TForm1.Button8Click(Sender: TObject); var L : dlistVar; begin l_init(L); l_pop_front(L); l_printl(L); end; procedure TForm1.Button9Click(Sender: TObject); var L : dlistVar; begin l_init(L); l_pop_back(L); l_printl(L); end; procedure TForm1.Button10Click(Sender: TObject); var L: dlistVar; p : pdlistEl; begin p:=L.head; memo1.lines.add(listbox1.items[p.data]) end; end. Последний раз редактировалось Admin, 06.01.2021 в 11:20. |
#2
|
|||
|
|||
Код:
Memo1.Lines.Text := ListBox1.Items.Text; Если ты хранишь и Итемах ListBox'а ссылки на элементы, то они будут утеряны. |