Участие в разработке

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Участие в разработке

Сообщение shade »

Допустим, у меня есть идеи как оптимизировать пару функций или исправить некоторый баг - что нужно сделать? написать об этом команде разработчиков или самому сделать коммит в svn?
Как в последнем случае получить логин и пароль?

Например:
iniFiles

Код: Выделить всё

function TCustomIniFile.ReadInteger(const Section, Ident: string; Default: Longint): Longint;
var
  s: string;
begin
  Result := Default;
  s := ReadString(Section, Ident, '');
  if s > '' then try
    // convert hex string
    if Pos('0X', UpperCase(s)) = 1 then
      s := '$' + Copy(s, 3, Length(s) - 2);
    Result := StrToInt(s);
  except
    on EConvertError do
    else raise;
  end;
end;

StrToInt делегирует свою функцию val + добавляет обработку исключений

Код: Выделить всё

function StrToInt(const S: string): integer;
var Error: word;
begin
  Val(S, result, Error);
  if Error <> 0 then raise EConvertError.createfmt(SInvalidInteger,[S]);
end;

А val в свою очередь обрабатывает шестнадцатеричные числа начинающиеся на 0x

Следовательно TCustomIniFile.ReadInteger упрощается до:

Код: Выделить всё

function TCustomIniFile.ReadInteger(const Section, Ident: string; Default: Longint): Longint;
begin
  // val, and therefore StrToInt support hex numbers prefixed with 0x
  Result := StrToInt( ReadString(Section, Ident, '') );
end;
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Т.е. так

Код: Выделить всё

function TCustomIniFile.ReadInteger(const Section, Ident: string; Default: Longint): Longint;
begin
  Result := Default;
  try
    // val, and therefore StrToInt support hex numbers prefixed with 0x
    Result := StrToInt( ReadString(Section, Ident, '') );
   except
    on EConvertError do
    else raise;
  end;
end;

исключение EConvertError нужно исключить, а еще лучше использовать непосредственно val :roll:
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Лучше использовать StrToIntDef, все получается в одну строчку:

Код: Выделить всё

  Result := StrToIntDef(ReadString(Section, Ident, ''), Default);


А сообщить - я например просто посылал письма c патчами Michael Van Canneyt (michael at freepascal dot org). Можно сделать патч и закинуть его в багтрекер, снабдив заголовком, начинающимся с [patch], и хотя бы минимальным комментарием. Через пару дней кто-нибудь закоммитит.
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Отправил в bug tracker http://www.freepascal.org/mantis/view.php?id=8712


Странно: svn diff есть, а svn patch нет. Есть svn merge, но выполняет она несколько иную функцию.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

shade писал(а):Странно: svn diff есть, а svn patch нет. Есть svn merge, но выполняет она несколько иную функцию.


Пользуясь tortoisesvn, об этом как-то не задумывался. Но по логике наложение заплаток никак не связано с наличием svn и должно нормально делаться при помощи обычного patch. А потом уже commit обычным порядком.
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Я пробовал обычным patch, но он похоже глюканул, ладно, я просто хотел посмотреть как это работает
Аватара пользователя
bw
постоялец
Сообщения: 359
Зарегистрирован: 01.12.2005 10:36:23
Откуда: Усть-Илимск
Контактная информация:

Сообщение bw »

Капитальный offtopic пошел. Было бы неплохо подчистить эти посты.
Тема интересная. Я, например, пишу RTL для KolibriOS. Работа может быть завершена через два месяци или в конце этой недели. Но вопрос в том что как бы подключить мой код к официальному репозитарию (комментарии на русском) или популиризовать иначе. Есть svn на данном ресурсе? (На своем делать не хочу так как все равно никому не известен.) Поместить код на ресурве KOS наверное не составит труда, но какие будут еще предложения.
Совсем забыл. Мой английский не позволяет общаться с англоязычными персонами.

p.s. У меня сегодня день рожденья :-).

..bw
rv82
новенький
Сообщения: 15
Зарегистрирован: 23.04.2007 10:28:43

Сообщение rv82 »

Вот чего бы мне хотелось, так это сделать так, чтобы компилятор FPC был регистрозависимым. Сделать бы для этого специальный ключ.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

не надо pascal превращать в C
:-)
Ответить