|
Вопрос # 4 667/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Есть процедура(ну предположим "My Procedure") на выходе которой есть несколько значений(сейчас их 5 но планируется увеличение).
Вопрос: Как добавить в Memo только значения с НЕ нулевым результатом?
 |
Вопрос задал: Ham_ele_on (статус: Посетитель)
Вопрос отправлен: 18 октября 2010, 15:46
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Ну, если параметры целые (Integer), не являются массивом (что странно) нужно наличие имён в мемо, то первое, приходит на ум:
procedure Add2Memo(ALines: TStrings; const AName: string; const AValue: Integer);
begin
if Assigned(ALines) and (AValue > 0)
then Lines.Add(AName + ' - ' + IntToStr(AValue) + ' шт.');
end;
// применение:
with Form1.Memo1 do
begin
Add2Memo(Lines, 'D', D);
Add2Memo(Lines, 'C', C);
Add2Memo(Lines, 'A', A);
Add2Memo(Lines, 'B', B);
end;
Остаётся только спросить, нафига вот это: "на выходе которой есть несколько значений(сейчас их 5 но планируется увеличение)"? Может стоило делать сразу по-человечески, а?
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 18 октября 2010, 16:05
|
Мини-форум вопроса
Всего сообщений: 14; последнее сообщение — 25 октября 2010, 08:45; участников в обсуждении: 6.
|
Ерёмин А.А. (статус: *Администратор), 18 октября 2010, 16:01 [#1]:
А какой вариант может быть проще? Разве что свою процедуру написать, которая будет принимать число и текст строки... Ну либо Form1.Memo1.Lines. вынести через with.
|
|
min@y™ (статус: Доктор наук), 18 октября 2010, 16:06 [#2]:
Цитата (Ерёмин А.А.):
А какой вариант может быть проще? Разве что свою процедуру написать, которая будет принимать число и текст строки... Ну либо Form1.Memo1.Lines. вынести через with.
Ааааааааааааааааааааа! Ты проник в мой мозг!!!111
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Шичко Игорь (статус: 9-ый класс), 18 октября 2010, 16:10 [#3]:
Если на выходе процедуры много значений, то логично их представить в виде, например, массива. Тогда в цикле их можно разместить в Memo.
|
|
Ham_ele_on (статус: Посетитель), 19 октября 2010, 12:19 [#4]:
Огромное всем спасибо за подсказки. min@y™:
я в начальной стадии обучения.
|
|
min@y™ (статус: Доктор наук), 19 октября 2010, 12:51 [#5]:
Цитата (Ham_ele_on):
я в начальной стадии обучения.
Так ты конкретизируй задачу, а мы подскажем, как лучше сделать. Для этого, собственно, мы тут и болтаемся.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Владимирович (статус: Посетитель), 20 октября 2010, 14:08 [#6]:
"процедура, на выходе которой есть несколько значений" Кто объяснит мне что это значит???
|
|
min@y™ (статус: Доктор наук), 20 октября 2010, 14:19 [#7]:
Цитата (Владимирович):
"процедура, на выходе которой есть несколько значений" Кто объяснит мне что это значит???
Я объясню. Вот пример:
procedure Example(const Inp: Integer; var Out1, Out2, Out3: Integer);
begin
// Здесь расчёт значений Out1, Out2, Out3 в зависимости от значения Inp
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ham_ele_on (статус: Посетитель), 24 октября 2010, 15:49 [#8]:
подскажите пожалуйста, где можно подробнее узнать про массивы(array) и наборы(множества)(set). а то я чего то запутался и не могу понять, как их правильно использовать.
|
|
min@y™ (статус: Доктор наук), 24 октября 2010, 16:09 [#9]:
Цитата (Ham_ele_on):
подробнее узнать про массивы(array) и наборы(множества)(set). а то я чего то запутался и не могу понять, как их правильно использовать.
Сначала скажи, для каких целей тебе их надо использовать.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ham_ele_on (статус: Посетитель), 24 октября 2010, 16:33 [#10]:
в двух разных местах используется большое перечисление переменных. (сохранение и чтение в файл) вот и подумалось, что можно всё это один раз описывать и править. или так нельзя?
и вообще, я реально не понимаю как и в каких случаях нужно(можно) использовать эти возможности. учусь по "библия дельфи. автор м. фленов"
|
|
Вадим К (статус: Академик), 24 октября 2010, 23:10 [#11]:
В целом, скорее всего придется в жизни пользоваться массивами, а множествами только в некоторых специализированных случаях. Я более чем уверен, что половина программистов, которые сидят в экспертах на этом сайте, даже не представляет как использовать множества и не сильно и переживает по этому поводу
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 25 октября 2010, 08:11 [#12]:
Цитата (Вадим К):
Я более чем уверен, что половина программистов, которые сидят в экспертах на этом сайте, даже не представляет как использовать множества и не сильно и переживает по этому поводу
Ну ты загнул!
Я, например, вообще не представляю, как люди могут обходиться без операции "in". А как же свойства-множества? Например, TOpenDialog.Options и т.п.
В классическом С++ нету множеств, и это меня не радует.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ham_ele_on (статус: Посетитель), 25 октября 2010, 08:23 [#13]:
я вообще догадываюсь, что вещи то полезные, но это как в басне крылова "мартышка и очки". где про них подробнее узнать?? искал в инете. всё одно и тоже. может какие нибудь реальные примеры есть??
|
|
min@y™ (статус: Доктор наук), 25 октября 2010, 08:45 [#14]:
Цитата (Ham_ele_on):
может какие нибудь реальные примеры есть??
Вот пример из одной моей проги. Функция, проверяющая, систему счисления введённого числа. Варианты: двоичная, восьмеричная, десятичная, шестнадцатеричная.
type
TDigitsSet = set of Char;
const
HexDigits: TDigitsSet = ['0'..'9', 'A'..'F', 'a'..'f'];
OctDigits: TDigitsSet = ['0'..'7'];
DecDigits: TDigitsSet = ['0'..'9'];
BinDigits: TDigitsSet = ['0', '1'];
function IsValueSystem(const S: string; const ASystem: Byte): Boolean;
var
i: Integer;
Digs: TDigitsSet;
begin
Result:= False;
if S = ''
then Exit;
case ASystem of
16: Digs:= HexDigits;
8: Digs:= OctDigits;
10: Digs:= DecDigits;
2: Digs:= BinDigits;
else
Digs:= [];
end;
for i:= 1 to Length(S) do
if not (S[i] in Digs)
then Exit;
Result:= True;
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|