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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 4 667

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

Доброго времени суток, уважаемые эксперты!
Есть процедура(ну предположим "My Procedure") на выходе которой есть несколько значений(сейчас их 5 но планируется увеличение).
Вопрос: Как добавить в Memo только значения с НЕ нулевым результатом?

Приложение:
  1.  
  2.  
  3.  
  4.  
  5.  


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

Вопрос задал: 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™

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

Ham_ele_on (статус: Посетитель), 19 октября 2010, 12:19 [#4]:

Огромное всем спасибо за подсказки. min@y™:
я в начальной стадии обучения.
min@y™

min@y™ (статус: Доктор наук), 19 октября 2010, 12:51 [#5]:

Цитата (Ham_ele_on):

я в начальной стадии обучения.

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

Владимирович (статус: Посетитель), 20 октября 2010, 14:08 [#6]:

"процедура, на выходе которой есть несколько значений" Кто объяснит мне что это значит???
min@y™

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

Ham_ele_on (статус: Посетитель), 24 октября 2010, 15:49 [#8]:

подскажите пожалуйста, где можно подробнее узнать про массивы(array) и наборы(множества)(set). а то я чего то запутался и не могу понять, как их правильно использовать.
min@y™

min@y™ (статус: Доктор наук), 24 октября 2010, 16:09 [#9]:

Цитата (Ham_ele_on):

подробнее узнать про массивы(array) и наборы(множества)(set). а то я чего то запутался и не могу понять, как их правильно использовать.

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

Ham_ele_on (статус: Посетитель), 24 октября 2010, 16:33 [#10]:

в двух разных местах используется большое перечисление переменных. (сохранение и чтение в файл) вот и подумалось, что можно всё это один раз описывать и править. или так нельзя?
и вообще, я реально не понимаю как и в каких случаях нужно(можно) использовать эти возможности. учусь по "библия дельфи. автор м. фленов"
Вадим К

Вадим К (статус: Академик), 24 октября 2010, 23:10 [#11]:

В целом, скорее всего придется в жизни пользоваться массивами, а множествами только в некоторых специализированных случаях. Я более чем уверен, что половина программистов, которые сидят в экспертах на этом сайте, даже не представляет как использовать множества и не сильно и переживает по этому поводу:)
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 25 октября 2010, 08:11 [#12]:

Цитата (Вадим К):

Я более чем уверен, что половина программистов, которые сидят в экспертах на этом сайте, даже не представляет как использовать множества и не сильно и переживает по этому поводу:)

Ну ты загнул!
Я, например, вообще не представляю, как люди могут обходиться без операции "in". А как же свойства-множества? Например, TOpenDialog.Options и т.п.
В классическом С++ нету множеств, и это меня не радует. :(
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ham_ele_on

Ham_ele_on (статус: Посетитель), 25 октября 2010, 08:23 [#13]:

я вообще догадываюсь, что вещи то полезные, но это как в басне крылова "мартышка и очки". где про них подробнее узнать?? искал в инете. всё одно и тоже. может какие нибудь реальные примеры есть??
min@y™

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. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

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

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:56
Выполнено за 0.03 сек.