Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 494

/ вопрос открыт /

Здравствуйте, эксперты!
Я хочу узнать как можно создать список, добавить новый элемент к нему и удалить элемент.

Aristotel Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Aristotel (статус: Посетитель)
Вопрос отправлен: 12 июля 2011, 11:03
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Gooddy

Здравствуйте, Aristotel!
Отвечаю на вопрос так, как написано в условии. Т.к. небыло пояснений буду считать, что нужен список строк, например:
1. "Вася"
2. "Петя"
3. "Григорий"

Тут есть два варианта - использовать TStrings, или TList. TList помощнеее, но сложнее для пономания и использования, так что приведу пример с TStringList.

См. приложение.

Приложение:
  1. var
  2.  
  3.  
  4. begin
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12. end;
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  


Ответ отправил: Gooddy (статус: 3-ий класс)
Время отправки: 12 июля 2011, 14:23
Оценка за ответ: 4

Комментарий к оценке: А можно как-то найти заданный элемент в списке и удалить его?

Мини-форум вопроса

Всего сообщений: 100; последнее сообщение — 15 июля 2011, 14:41; участников в обсуждении: 7.

Страницы: [« Предыдущая] [1] [2] [3] [4] [5] [Следующая »]

Gooddy

Gooddy (статус: 3-ий класс), 13 июля 2011, 11:05 [#61]:

"Метод Insert
Вставляет строку в заданную индексом позицию. Позиция 0 вызовет вставку в начало."
Чисти код! Чисти код! Чисти код!
Aristotel

Aristotel (статус: Посетитель), 13 июля 2011, 11:13 [#62]:

А как позицию задать?
Gooddy

Gooddy (статус: 3-ий класс), 13 июля 2011, 11:25 [#63]:

Insert( 0, 'Вася' );
Чисти код! Чисти код! Чисти код!
Aristotel

Aristotel (статус: Посетитель), 13 июля 2011, 11:31 [#64]:

Ещё вопрос-где писать List := TStringList.Create();
min@y™

min@y™ (статус: Доктор наук), 13 июля 2011, 11:34 [#65]:

Цитата (Aristotel):

Ещё вопрос-где писать List := TStringList.Create();

Так и хочется сказать "на заборе". Но отвечу - там, где тебе нужно создать объект, там и вызывай его конструктор.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Gooddy

Gooddy (статус: 3-ий класс), 13 июля 2011, 11:38 [#66]:

min@y™: =(
Чисти код! Чисти код! Чисти код!
Gooddy

Gooddy (статус: 3-ий класс), 13 июля 2011, 11:44 [#67]:

Неужто всё?
Чисти код! Чисти код! Чисти код!
Aristotel

Aristotel (статус: Посетитель), 13 июля 2011, 11:48 [#68]:

Что то я не могу составить программу из этого всего
Gooddy

Gooddy (статус: 3-ий класс), 13 июля 2011, 11:49 [#69]:

*Помогаю телепатически починить неизвестную мне программу*
Чисти код! Чисти код! Чисти код!
Gooddy

Gooddy (статус: 3-ий класс), 13 июля 2011, 11:49 [#70]:

Код в студию!
Чисти код! Чисти код! Чисти код!
Aristotel

Aristotel (статус: Посетитель), 13 июля 2011, 11:52 [#71]:

Ща подожди
Gooddy

Gooddy (статус: 3-ий класс), 13 июля 2011, 11:58 [#72]:

Ну что там?
Чисти код! Чисти код! Чисти код!
Aristotel

Aristotel (статус: Посетитель), 13 июля 2011, 12:00 [#73]:

Ты сильно занят у меня щас обеденный перерыв?
Aristotel

Aristotel (статус: Посетитель), 13 июля 2011, 12:01 [#74]:

Буду через полчаса
Gooddy

Gooddy (статус: 3-ий класс), 13 июля 2011, 12:24 [#75]:

Я не занят ближайшие 24 часа точно и возможно несколько больше.
Чисти код! Чисти код! Чисти код!
Aristotel

Aristotel (статус: Посетитель), 13 июля 2011, 12:34 [#76]:

Блин не могу даже запустить прогу
Aristotel

Aristotel (статус: Посетитель), 13 июля 2011, 12:38 [#77]:

Вот код:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
Button2: TButton;
procedure Edit1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
List: TStringList;
i: Integer;
implementation

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
begin
List := TStringList.Create();

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
List.Add( 'Edit1.Text' );
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
i := List.IndexOf( 'Вася' );
List.Delete( i );
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.
Gooddy

Gooddy (статус: 3-ий класс), 13 июля 2011, 12:48 [#78]:

procedure TForm1.Edit1Change(Sender: TObject);
begin
List := TStringList.Create();

end;


При каждом изменении Edit создаётся новый список. Так и надо?
Чисти код! Чисти код! Чисти код!
Aristotel

Aristotel (статус: Посетитель), 13 июля 2011, 12:54 [#79]:

Нет ну в какой процедуре создавать список?
Gooddy

Gooddy (статус: 3-ий класс), 13 июля 2011, 12:57 [#80]:

List := TStringList.Create();

Нужно поместить в САМОЕ НАЧАЛО программы. Не в самое высокое место, а то, что ПРОИСХОДИТ РАНЬШЕ.

В данной программе раньше всего вызывается событие FormCreate.

И кстати, надо ещё и удалить список в конце. Я об этом писал.
Пока конечно можно не удалять, раз даже элементарные вещи пока недоступны.

List.Add( 'Edit1.Text' ); <-- это вообще откуда?

List.Add( Edit1.Text ); <-- подразумевалось скорее всего это


После этих изменений всё будет нормально.
Чисти код! Чисти код! Чисти код!

Страницы: [« Предыдущая] [1] [2] [3] [4] [5] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 26 апреля 2026, 02:06
Выполнено за 0.03 сек.