Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 32

Запись record в массив из edit

20.02.2017, 17:52. Показов 4561. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, мне нужна помощь. Вообще есть задача: список людей стоящих в очереди на получение квартиры. В списке указаны порядковый номер, фамилия, имя, отчество и год занятия очереди. По указанному количеству квартир выдаваемых в год, упорядочить список и указать в каком порядке и в каком году люди получат квартиры.
Но до этого далеко.

Есть код: реализован интерфейс, сохранение и загрузка текстового файла и бла-бла-бла.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Menus;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    RichEdit1: TRichEdit;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Label6: TLabel;
    Edit5: TEdit;
    Button1: TButton;
    UpDown1: TUpDown;
    Edit6: TEdit;
    UpDown2: TUpDown;
    Label7: TLabel;
    Edit7: TEdit;
    Button2: TButton;
    RichEdit2: TRichEdit;
    procedure N4Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
type                              <<ВОТ ЭТИ СТРОКИ НЕПРАВИЛЬНЫ?
  zapis=record                 <<ВОТ ЭТИ СТРОКИ НЕПРАВИЛЬНЫ?
  fname: string[20];         <<ВОТ ЭТИ СТРОКИ НЕПРАВИЛЬНЫ?
  sname: string[20];         <<ВОТ ЭТИ СТРОКИ НЕПРАВИЛЬНЫ?
  tname: string[20];         <<ВОТ ЭТИ СТРОКИ НЕПРАВИЛЬНЫ?
end;
 
var
  fio: array [1..20] of zapis;   <<ВОТ ЭТИ СТРОКИ НЕПРАВИЛЬНЫ?
  Form1: TForm1;
  x:integer;
 
implementation
 
{$R *.dfm}
 
 
 
 
 
procedure TForm1.N4Click(Sender: TObject);
begin
Close
end;
 
procedure TForm1.N2Click(Sender: TObject);
begin
 
Form1.OpenDialog1.Filter := 'Текстовые файлы(*.txt)|*.txt| Форматированный текст (*.rtf)|*.rtf';
Form1.OpenDialog1.Execute();
Form1.RichEdit1.Lines.LoadFromFile(Form1.OpenDialog1.FileName);
end;
 
procedure TForm1.N3Click(Sender: TObject);
begin
Form1.SaveDialog1.Execute();
RichEdit1.Lines.SaveToFile(SaveDialog1.FileName+'.rtf');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
fio[i].fname:=Edit1.Text;                         <<ВОТ ЭТИ СТРОКИ НЕПРАВИЛЬНЫ?
RichEdit1.Lines.add(fio[i].fname);              <<ВОТ ЭТИ СТРОКИ НЕПРАВИЛЬНЫ?
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
RichEdit1.Clear;
end;
 
end.
Все данные записываются в edit. После этого должны заносится в строки RichEdit по нажатию кнопки. Но вот в чём проблема. Выдаёт ошибку ACCESS VIOLATION. Я что-то неправильно задал, или где-то неправильно обратился, в общем где-то ошибка с самим Record или с присвоением значения, или с массивом. Не понимаю. Если делать запись без Record,
использоваться строки
RichEdit1.Lines.add('¹ ' + Edit5.Text + ' ' + Edit1.Text + ' ' + Edit2.Text + ' ' + Edit3.Text + ' ' + Edit4.Text + ' ' + Edit7.Text);
Всё отлично работает. Но в таком случае вторую часть задачи(сортировку) не понимаю как сделать. Пожалуйста, наставьте на путь истинный.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.02.2017, 17:52
Ответы с готовыми решениями:

Как создать record внутри которого есть динамический массив с record-ами?
Упрощу код, чтоб не писать полные record-ы: type TSec = record vSize : DWord; vAddr : DWord; rSize : DWord; ...

Дан одномерный массив из N элементов, каждый из которых представляет собой запись вида Type ZAP=Record St: string [10];
Дан одномерный массив из N элементов, каждый из которых представляет собой запись вида Type ZAP=Record St: string ; Dt: integer; ...

Массив из данных типа "запись" (record) содержит сведения о выставленных на продажу автомобилях
кто-нибудь может пожалуйста помочь вот с этой программой в делфи. массив из данных типа &quot;запись&quot; (record) содержит сведения...

45
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 32
25.02.2017, 00:32  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Gluhow Посмотреть сообщение
В таком случае сортировка вообще не нужна. Нужно просто вывести. Например так
Окей, я попробовал сделать через StringGrid. Попробовал сделать для начала процедуру переноса строк из RichEdit в строки StringGrid, но что-то не так идёт.
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button2Click(Sender: TObject);
var d:integer;
begin
d:=1;
for d:=1 to stringgrid1.rowcount do
StringGrid1.Cells[1,d]:=RichEdit1.Lines[d];
end;
0
botsik
 Аватар для cfbogd
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
25.02.2017, 00:49
Goshanus,
Delphi
1
for d:=0 to stringgrid1.rowcount-1 do
0
30 / 24 / 22
Регистрация: 12.11.2011
Сообщений: 181
25.02.2017, 07:13
Через что делать вывод - пофигу. Можешь и RichEdit-e оставить. А если переносить в StringGrid, то действительно у него нумерация с 0 начинается, поэтому строки с индексом [rowcount] не существует
0
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 32
25.02.2017, 12:13  [ТС]
cfbogd, Gluhow, а как занести в stringgrid только данные из Edit7(Год записи), которые соответствуют строке? Или последние 4 символа каждой строки?
0
30 / 24 / 22
Регистрация: 12.11.2011
Сообщений: 181
25.02.2017, 20:46
Цитата Сообщение от Goshanus Посмотреть сообщение
как занести в stringgrid только данные из Edit7(Год записи)
Не понял вопроса. Есть массив из TZapis, берешь запись с нужным индексом, берешь из нее нужное поле и куда хочешь выводишь...
0
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 32
25.02.2017, 23:09  [ТС]
Цитата Сообщение от Gluhow Посмотреть сообщение
Не понял вопроса. Есть массив из TZapis, берешь запись с нужным индексом, берешь из нее нужное поле и куда хочешь выводишь...
Мне нужно из поля заполненного RichEdit, вынести только
Цитата Сообщение от Gluhow Посмотреть сообщение
Не понял вопроса. Есть массив из TZapis, берешь запись с нужным индексом, берешь из нее нужное поле и куда хочешь выводишь...
Вот моя строка присвоения:
Delphi
1
StringGrid1.Cells[0,d]:=RichEdit1.Lines[d];
Я заношу данные в Edit и по кнопке заношу их в строку. А в этой строке я копирую данные из линий RichEdit в строки StringGrid, но мне надо не всю линию, а только последнюю её часть. Edit7.Text, последние 4 строки каждлой строки. Вот.
0
30 / 24 / 22
Регистрация: 12.11.2011
Сообщений: 181
26.02.2017, 07:44
Чтобы взять последние несколько символов есть функция RightStr, но! сама работа должна строиться так
1) Ввод данных и размещение их в список/массив из Tzapis
2) Работа с этими данными (может быть тебе и не надо)
3) Вывод записей туда куда тебе надо.
И я не понимаю на каком из этих шагов тебе может потребоваться копирование из RichEdit в StringGrid.
0
Модератор
 Аватар для D1973
9952 / 6487 / 2461
Регистрация: 21.01.2014
Сообщений: 27,485
Записей в блоге: 3
26.02.2017, 07:46
Цитата Сообщение от Goshanus Посмотреть сообщение
последние 4 строки каждлой строки
И как это выглядит?
0
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 32
28.02.2017, 01:20  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
И как это выглядит?
Последние четыре элемента* каждой строки.

Добавлено через 4 минуты
Цитата Сообщение от Gluhow Посмотреть сообщение
Чтобы взять последние несколько символов есть функция RightStr, но! сама работа должна строиться так
1) Ввод данных и размещение их в список/массив из Tzapis
2) Работа с этими данными (может быть тебе и не надо)
3) Вывод записей туда куда тебе надо.
И я не понимаю на каком из этих шагов тебе может потребоваться копирование из RichEdit в StringGrid.
У меня это сделано так:
1) Ввод данных посредством нескольких окон EDIT, после чего по нажатию на кнопку эти данные записываются поочерёдно в строки RichEdit. 1 нажатие = 1 строка. Строка сама имеет вид :
Delphi
1
RichEdit1.Lines.add('¹ ' + Edit5.Text + ' ' + Edit1.Text + ' ' + Edit2.Text + ' ' + Edit3.Text + ' ' + Edit4.Text + ' ' + Edit7.Text);
где Edit7.Text - string[4] - четыре символа определяющие год постановки в очередь. И именно по этому Edit7. в каждой строке мне нужно провести сортировку следующего вида: вводится количество квартир выдаваемых в год. После идёт проверка, по соотношение количества квартир выдаваемых в год и очерёдников на этот самый год. Если очерёдников больше - то ожидаемый год получения квартиры переносится, в соответствии с количеством квартир выдаваемых в год. И так далее. StringGrid я выбрал для вывода результата этой самой сортировки. Воот.
0
30 / 24 / 22
Регистрация: 12.11.2011
Сообщений: 181
28.02.2017, 09:29
Цитата Сообщение от Goshanus Посмотреть сообщение
Ввод данных посредством нескольких окон EDIT, после чего по нажатию на кнопку эти данные записываются поочерёдно в строки RichEdit
Хранить данные в RichEdit - очень плохая идея. Здесь, в этой теме уже всё написали и как сохранить в массив/список и как вывести с учетом условий, так нет надо придумать на свою голову совершенно дурацкий сохранение в RichEdit! Но ведь даже как выделить несколько несчастных символов уже написали, а всё равно спрашиваешь одно и то же!
0
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 32
28.02.2017, 13:06  [ТС]
Цитата Сообщение от Gluhow Посмотреть сообщение
Хранить данные в RichEdit - очень плохая идея. Здесь, в этой теме уже всё написали и как сохранить в массив/список и как вывести с учетом условий, так нет надо придумать на свою голову совершенно дурацкий сохранение в RichEdit! Но ведь даже как выделить несколько несчастных символов уже написали, а всё равно спрашиваешь одно и то же!
Как должна выглядеть строка с сокращением линии?
Delphi
1
StringGrid1.Cells[0,d]:=RightStr(RichEdit1.Lines[d],4);
Такую не принимает
0
30 / 24 / 22
Регистрация: 12.11.2011
Сообщений: 181
28.02.2017, 13:20
Цитата Сообщение от Goshanus Посмотреть сообщение
Delphi
1
StringGrid1.Cells[0,d]:=RightStr
(RichEdit1.Lines[d],4);
У меня RichEdit-a нет, попробовал на Memo всё нормально
С индексом d все нормально? Что такое "не принимает"? Не компилится? Выдает ошибку при выполнении? Работает, но не правильно?
0
Модератор
 Аватар для D1973
9952 / 6487 / 2461
Регистрация: 21.01.2014
Сообщений: 27,485
Записей в блоге: 3
28.02.2017, 13:50
Цитата Сообщение от Gluhow Посмотреть сообщение
У меня RichEdit-a нет
Куда же это у Вас он делся? На вкладку Win32 палитры компонентов заходить не пробовали?
0
30 / 24 / 22
Регистрация: 12.11.2011
Сообщений: 181
28.02.2017, 13:55
И Win32 нет, и Windows-а нет... )
0
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 32
28.02.2017, 16:55  [ТС]
Цитата Сообщение от Gluhow Посмотреть сообщение
У меня RichEdit-a нет, попробовал на Memo всё нормально
С индексом d все нормально? Что такое "не принимает"? Не компилится? Выдает ошибку при выполнении? Работает, но не правильно?
Undeclared identifier: 'RightSrt', может её как-то объявить по особенному надо? d - счётчик.
Delphi
1
2
d:=0;
for d:=0 to stringgrid1.rowcount-1 do
0
30 / 24 / 22
Регистрация: 12.11.2011
Сообщений: 181
28.02.2017, 17:34
Delphi
1
uses ..., SysUtils,...
0
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 32
28.02.2017, 22:00  [ТС]
Цитата Сообщение от Gluhow Посмотреть сообщение
uses ..., SysUtils,...
Объявлена, всё равно не работает ;(
0
30 / 24 / 22
Регистрация: 12.11.2011
Сообщений: 181
01.03.2017, 09:17
Цитата Сообщение от Goshanus Посмотреть сообщение
всё равно не работает ;(
http://www.freepascal.org/docs... htstr.html
Там же дан пример как сделать тоже самое через Copy
0
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 32
01.03.2017, 22:53  [ТС]
Цитата Сообщение от Gluhow Посмотреть сообщение
http://www.freepascal.org/docs-html/.../rightstr.html
Там же дан пример как сделать тоже самое через Copy
Ну не работает она, не компилирует
0
30 / 24 / 22
Регистрация: 12.11.2011
Сообщений: 181
02.03.2017, 05:39
Copy тоже?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.03.2017, 05:39

Запись в файл из полей Edit и проверка Edit на пустоту
TForm1 *Form1; int Ext=0; int i; //--------------------------------------------------------------------------- __fastcall...

Запись Record?
можно ли сделать так type q = record fx:byte; gl:string; img:TImage; ...

Запись record в dat файл
Записывать записывает, не знаю на сколько верно, а вот прочесть не может. Описание ClientBase type ClientBase = record ...

Запись в файл Record с TStringList
Подскажите, пожалуйста, как сохранить TStringList в составе record в файл? Вот эти данные нужно записать в файл, а потом считать. Всё...

Записать в файл запись типа record
Записать в файл запись типа record, как это произвести в интернете не нашел объяснений нормальных, помогите


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru