Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Карина_
1 / 1 / 0
Регистрация: 28.01.2016
Сообщений: 40
#1

Работа с Memo (не законченный код)

10.02.2016, 16:01. Просмотров 304. Ответов 9
Метки нет (Все метки)

Создать программу,которая может хранить данные в виде списка с возможностью записать в файл, загрузить из файла и обработку программы согласно условию задачи :
* Информация о пассажире содержащие ФИО, кол-во мест багажа от 1 до 5 и общий вес багажа от 1 до 100 вывести данные о пассажире в порядке убывания среднего веса 1 места

Я создала 3 кнопки:
1 кнопка отвечает за открытие файла,
2 кнопка за сохранение файла,
3 за сортировку

2 Memo : чтоб на первое мемо загрузить файл, а на второй вывести сортировку
мой код
Delphi
1
2
3
4
5
6
7
8
9
10
var F:  File ;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Memo1.Lines.LoadFromFile('111.txt' );
end;
 
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Memo1.Lines.SaveToFile('имя_файла.txt');
end;
Подскажите код для 3 кнопки
Необходимо вывести в мемо2 ФИО пассажира в порядке убывания среднего веса
(Чтоб найти средний вес необходимо общий вес разделить на кол-во мест)

Сам файл прикреплён
0
Вложения
Тип файла: txt 111.txt (369 байт, 5 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2016, 16:01
Ответы с готовыми решениями:

работа с memo
можно ли при нажатии кнопки чтобы определенный текст выводило именно там где...

работа с MEMO
В МЕМО может быть около10000-12000 строк. Надо удалить несколько сотен строк...

работа с MEMO
у вас очень интересный форум, но нужной инфы я не нашел (может есть, но...

Работа с Memo
Помогите, нужно взять строку из memo и перевести в код Например в ней записано...

работа с memo
в первом задании мне нужно в области мемо определить тип предложений и каких...

9
qwertehok
2212 / 2200 / 600
Регистрация: 29.08.2013
Сообщений: 14,691
10.02.2016, 16:24 #2
Цитата Сообщение от Карина_ Посмотреть сообщение
которая может хранить данные в виде списка
вы читали что такое списки в delphi?

вот вам пример
http://www.delphibasics.ru/Record.php
вы должны создать список, наполнить его и сохранить\загрузить

а те 2 строки что вы написали (да и сам файл) к заданию не имеют отношения
0
NIKOLAYY
819 / 717 / 339
Регистрация: 22.09.2012
Сообщений: 4,994
10.02.2016, 17:54 #3
Я так понял из мемо-поля нужно сделать таблицу!
То есть редактируемую таблицу и сортируемую таблицу и все это нужно сделать из файла который подгружается в мемо-поле!

Тут суть важна, а нужно ли использовать для этого компонент мемо?
На скрине моя попытка создать таблицу из Memo, это долго, поэтому мой тебе совет: Я тебе не советую.

Ну если конечно программно ее создавать и использовать шрифт который диктует одинаковое расстояние межу символами то может и выйдет что путнее..
0
Миниатюры
Работа с Memo (не законченный код)  
qwertehok
2212 / 2200 / 600
Регистрация: 29.08.2013
Сообщений: 14,691
10.02.2016, 17:57 #4
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Я так понял из мемо-поля нужно сделать таблицу!
прочитай задание

Цитата Сообщение от Карина_ Посмотреть сообщение
которая может хранить данные в виде списка с возможностью записать в файл, загрузить из файла
это обычный record
0
NIKOLAYY
819 / 717 / 339
Регистрация: 22.09.2012
Сообщений: 4,994
10.02.2016, 18:00 #5
А может StringGrid лучше взять? Или не обязательно нужен Memo?

Добавлено через 3 минуты
Цитата Сообщение от qwertehok Посмотреть сообщение
прочитай задание
Э слыш ты, ты чо самый умный что ли?
Прежде чем делать задание по взятию и сортировке данных нужно сначала каким то образом считывать эти данные.

Ты же катиш телегу вперед себя, не зная как взять данные, ты уже пытаешся сортировать эти данные..
0
RostorLuxor
10.02.2016, 18:03
  #6

Не по теме:

Чего-то издалека тему про лечение компьютерных вирусов напомнило.

0
qwertehok
2212 / 2200 / 600
Регистрация: 29.08.2013
Сообщений: 14,691
10.02.2016, 18:04 #7
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Э слыш ты, ты чо самый умный что ли?
это что за обращение? дома так общаться будешь

Цитата Сообщение от NIKOLAYY Посмотреть сообщение
ты уже путаешся сортировать данные..
я ничего не путаюсь
почитай как сохранить record в файл
0
Карина_
1 / 1 / 0
Регистрация: 28.01.2016
Сообщений: 40
10.02.2016, 19:25  [ТС] #8
NIKOLAYY, можно и через стринггрид
0
NIKOLAYY
819 / 717 / 339
Регистрация: 22.09.2012
Сообщений: 4,994
11.02.2016, 02:01 #9
Цитата Сообщение от Карина_ Посмотреть сообщение
можно и через стринггрид
Ну тогда гораздо легче будет код написать.
Можно конечно и через мемо текст грузить если очень надо но тогда в красивом расположении текста и в его выравнии будут большие проблемы..

Цитата Сообщение от qwertehok Посмотреть сообщение
сохранить record
Да наверно просто файл текстовый с загрузкой в таблицу сделать да и все.
0
unifikator
490 / 348 / 229
Регистрация: 29.03.2015
Сообщений: 675
11.02.2016, 07:19 #10
Код:
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
unit MainU;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Memo2: TMemo;
    Button3: TButton;
    Button4: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
opendialog1.InitialDir:=getcurrentdir;
if opendialog1.Execute then
memo1.Lines.LoadFromFile(opendialog1.FileName);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
savedialog1.InitialDir:=getcurrentdir;
if savedialog1.Execute then
memo1.Lines.SaveToFile(savedialog1.FileName);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
type
trec=record
name:string;
place,weight:integer;
end;
tarr=array of trec;
var
a:tarr;
t:trec;
p1,p2,p3,j,k:integer;
z:string;
function delspace(s:string):string;
var
i:integer;
r:string;
begin
r:='';
for i:=1 to length(s) do
if s[i]<>' ' then
r:=r+s[i];
result:=r;
end;
function getrec(s:string;var q:trec):boolean;
var
i:integer;
begin
i:=pos('|',s);
if i<1 then
begin
showmessage('Нет разделителя "|"!');
result:=false;
exit;
end;
q.name:=copy(s,1,i-1);
delete(s,1,i);
i:=pos('|',s);
if i<1 then
begin
showmessage('Нет разделителя "|"!');
result:=false;
exit;
end;
try
q.place:=strtoint(delspace(copy(s,1,i-1)));
except
begin
showmessage('Число мест должно быть целым числом!');
result:=false;
exit;
end;
end;
delete(s,1,i);
i:=pos('|',s);
if i<1 then
begin
showmessage('Нет разделителя "|"!');
result:=false;
exit;
end;
try
q.weight:=strtoint(delspace(copy(s,1,i-1)));
except
begin
showmessage('Общий вес должен быть целым числом!');
result:=false;
exit;
end;
end;
result:=true;
end;
function getstr(s:string;w:integer):string;
var
i,l:integer;
r:string;
begin
r:=s;
l:=w-length(s)-1;
for i:=1 to l do
r:=r+' ';
result:=r+'|';
end;
begin
if memo1.Lines.Count<1 then
begin
showmessage('Должно быть не менее 1 строки в первом многострочном поле!');
exit;
end;
setlength(a,memo1.Lines.Count-1);
for j:=1 to memo1.Lines.Count-1 do
begin
if not getrec(memo1.Lines[j],t) then exit;
a[j-1]:=t;
end;
for j:=0 to length(a)-1 do
for k:=1 to length(a)-1 do
if j<>k then
begin
if a[k-1].weight/a[k-1].place<a[k].weight/a[k].place then
begin
t:=a[k-1];
a[k-1]:=a[k];
a[k]:=t;
end;
end;
z:=memo1.Lines[0];
p1:=pos('|',z);
if p1<1 then
begin
showmessage('В первой строке должен быть разделитель "|"!');
exit;
end;
delete(z,1,p1);
p2:=pos('|',z);
if p2<1 then
begin
showmessage('В первой строке должен быть разделитель "|"!');
exit;
end;
delete(z,1,p2);
p3:=pos('|',z);
if p3<1 then
begin
showmessage('В первой строке должен быть разделитель "|"!');
exit;
end;
delete(z,1,p3);
memo2.Clear;
memo2.Lines.Add(memo1.Lines[0]);
for j:=0 to length(a)-1 do
memo2.Lines.Add(getstr(a[j].name,p1)+getstr(inttostr(a[j].place),p2)+getstr(inttostr(a[j].weight),p3));
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;
 
end.
Прилагаю проект на Delphi.
0
Вложения
Тип файла: zip AveWeight.zip (216.7 Кб, 0 просмотров)
11.02.2016, 07:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2016, 07:19

Подстроить код Memo для StringList
Всем привет. Я столкнулся с такой проблемой, мне нужно вот этот код для Memo...

Memo и работа с текстом
Добрый утро/день/вечер/ночь, прошу у вас помощи! Помогите неудачнику......

Работа с компонентом memo
Есть программа - моя,мне нужно чтобы в компоненте memo нельзя было бы вводить...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru