Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 28 29 30 31 32 33 [34] 35 36 37   вперед  Ctrl
 Re: Топик "как я лажанулся"  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57686
Любезный> Нисколько.

А почему порядок дней такой неправославный ?

Posted via ActualForum NNTP Server 1.5

20 авг 17, 23:09    [20737547]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Любезный
Member

Откуда:
Сообщений: 441
автор
А почему порядок дней такой неправославный ?


Потому что в связанном коде и в данных широко используется известная функция:
автор
DayOfWeek returns the day of the week of the specified date as an integer between 1 and 7, where Sunday is the first day of the week and Saturday is the seventh.
20 авг 17, 23:11    [20737551]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Любезный
Member

Откуда:
Сообщений: 441
автор
Ещё один шок будет, если ему придётся столкнуться с
массивами с "совсем нестандартной" нижней границей.

Вот я почему-то думал, что методы Low и High должны четко показывать индексацию массива, причем любого. Но вот сейчас понял, что это не так.
20 авг 17, 23:13    [20737554]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Правильный Вася
Member

Откуда:
Сообщений: 23
Любезный
Вот я почему-то думал, что методы Low и High должны четко показывать индексацию массива, причем любого. Но вот сейчас понял, что это не так.

а ты попробуй прямо в тексте своей функции проверить именно DAYOFWEEK, а не открытый массив, передаваемый параметром
20 авг 17, 23:18    [20737558]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Любезный
Member

Откуда:
Сообщений: 441
автор
а ты попробуй прямо в тексте своей функции проверить именно DAYOFWEEK, а не открытый массив, передаваемый параметром

Как раз сейчас это и сделал. Теперь переписываю под этот вариант. Не люблю повторы кода, но тут, видимо, без этого не обойтись.
20 авг 17, 23:23    [20737562]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Любезный
array [1..7] of String

Любезный
array of String

Это же разные типы данных.
21 авг 17, 10:57    [20738015]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57686
Любезный> тут, видимо, без этого не обойтись.

Почему же? Low(Arr) + Function(Arr)

Posted via ActualForum NNTP Server 1.5

21 авг 17, 14:28    [20738797]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
alekcvp
Member

Откуда:
Сообщений: 515
Любезный
автор
а ты попробуй прямо в тексте своей функции проверить именно DAYOFWEEK, а не открытый массив, передаваемый параметром

Как раз сейчас это и сделал. Теперь переписываю под этот вариант. Не люблю повторы кода, но тут, видимо, без этого не обойтись.

Внезапно,
type
  TWeekDays = array [1..7] of string;

const
  DAYSOFWEEK: TWeekDays = (
    'Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота');

function FindTextInArray(const Str: String; const arr: TWeekDays): Integer;
var 
  I: Integer;
begin
  Result := -1;
  for I := Low (arr) to High (arr) do 
    if arr[I] = Str then begin
      Result := I;
      Break;
    end;
end;
21 авг 17, 15:55    [20739201]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
alekcvp
Member

Откуда:
Сообщений: 515
А, поспешил, если FindTextInArray универсальная, то там несколько сложнее.
21 авг 17, 15:57    [20739211]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 51462
Блог
Весь этот фрагмент топика прямо греет сердце дедушки Вирта, поскольку сводится к фразе "Сколько лажи случается из-за неверно выбранного типа данных".
21 авг 17, 16:00    [20739226]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Arioch
Member

Откуда:
Сообщений: 9144
YuRock
Любезный
array of String
Это же разные типы данных.


причём последнее - тоже два разных типа данных ,в зависимости от того, в каком месте программы встретится.

В его случае - это открытый массив.
21 авг 17, 16:07    [20739264]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Arioch
Member

Откуда:
Сообщений: 9144
Kazantsev Alexey
условные точки останова весьма тормозные


если средствами отладчика.

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

if xxx then asm int 3 end;
21 авг 17, 16:09    [20739270]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57686
softwarer> неверно выбранного типа данных".

А какой верный? Список что ли?

Posted via ActualForum NNTP Server 1.5

21 авг 17, 16:15    [20739299]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
schi
Member

Откуда: Москва
Сообщений: 2353
alekcvp
Любезный
пропущено...

Как раз сейчас это и сделал. Теперь переписываю под этот вариант. Не люблю повторы кода, но тут, видимо, без этого не обойтись.

Внезапно,
type
  TWeekDays = array [1..7] of string;

const
  DAYSOFWEEK: TWeekDays = (
    'Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота');

function FindTextInArray(const Str: String; const arr: TWeekDays): Integer;
var 
  I: Integer;
begin
  Result := -1;
  for I := Low (arr) to High (arr) do 
    if arr[I] = Str then begin
      Result := I;
      Break;
    end;
end;


Зачем изобретать MatchStr/MatchText из strutils ? :)
21 авг 17, 16:29    [20739351]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57686
Будто они лишены обсуждаемой "проблемы"...

Posted via ActualForum NNTP Server 1.5

21 авг 17, 16:34    [20739376]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 51462
Блог
Гаджимурадов Рустам
А какой верный? Список что ли?

Об эффективности у автора явно речь не идёт, поэтому главным требованием является удобное использование. А удобное использование, лично по мне - это что-то типа

var
  WeekDays: TSomeMagic := TSomeMagic.Create(['Понедельник', 'Вторник', 'Среда' ...]);

begin
  ShowMessageFmt('Номер пятницы = %d'#13'Третий день = %s', [WeekDays.Index('Пятница'), WeekDays.Name(3)]);
  ...
21 авг 17, 16:47    [20739444]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57686
Ну т.е. TStrings. Считай, тот же список...

Posted via ActualForum NNTP Server 1.5

21 авг 17, 16:55    [20739476]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 51462
Блог
Гаджимурадов Рустам
Ну т.е. TStrings. Считай, тот же список...

То есть class. А реализация внутри уже до фонаря.
21 авг 17, 16:56    [20739484]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 2676
Arioch
если же самому кодировать - то быстрые, но потом возникнет потребность их все вычистить и не пропустить :-)

Я об этом и говорил, пришлось условия в код вносить. Более того, второй останов приходилось устанавливать после срабатывания первого, а они ещё и в разных файлах.
21 авг 17, 17:43    [20739640]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Arioch
Member

Откуда:
Сообщений: 9144
softwarer
WeekDays: TSomeMagic := TSomeMagic.Create(['Понедельник', 'Вторник', 'Среда' ...]);


WeekDays: TStringDynArray := TStringDynArray.Create('Понедельник', 'Вторник', 'Среда' ...);


либо TArray<String>
22 авг 17, 12:14    [20740911]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Bred eFeM
Member

Откуда:
Сообщений: 519
Arioch
вычистить и не пропустить :-)
procedure Dbg(Act :Boolean; const Info :String = ''); inline;
begin
{$IFDEF DEBUG}
  if Act then DebugBreak();
{$ENDIF}
end;

//
Dbg( i <> j , 'programmer_not_less_or_equal');
22 авг 17, 16:31    [20741898]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Arioch
Member

Откуда:
Сообщений: 9144
Bred eFeM,

procedure DebugBreak(); inline;
begin
   asm Int 3 end;
end;

procedure Dbg(Act :Boolean; const Info :String = ''); inline;
begin
{$IfOpt D+}
  if Act then DebugBreak();
{$ENDIF}
end;
22 авг 17, 16:54    [20741959]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Правильный Вася
Member

Откуда:
Сообщений: 23
свеженький пример по теме
http://programmersforum.ru/showthread.php?t=311733
22 авг 17, 18:41    [20742286]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
чччД
Guest
Правильный Вася
свеженький пример по теме
http://programmersforum.ru/showthread.php?t=311733

22 авг 17, 19:33    [20742373]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
чччД
Guest
Правильный Вася,

а в отадчике значение параметров сразу увидели бы.
22 авг 17, 19:35    [20742378]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 28 29 30 31 32 33 [34] 35 36 37   вперед  Ctrl
Все форумы / Delphi Ответить