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

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

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

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

Сообщение shade » 17.04.2007 20:10:03

Допустим, у меня есть идеи как оптимизировать пару функций или исправить некоторый баг - что нужно сделать? написать об этом команде разработчиков или самому сделать коммит в 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 20:15:48
Откуда: http://shamangrad.net/

Сообщение shade » 17.04.2007 21:11:35

Т.е. так
Код: Выделить всё
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:
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Sergei I. Gorelkin » 17.04.2007 22:15:16

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

Код: Выделить всё
  Result := StrToIntDef(ReadString(Section, Ident, ''), Default);


А сообщить - я например просто посылал письма c патчами Michael Van Canneyt (michael at freepascal dot org). Можно сделать патч и закинуть его в багтрекер, снабдив заголовком, начинающимся с [patch], и хотя бы минимальным комментарием. Через пару дней кто-нибудь закоммитит.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение shade » 18.04.2007 11:02:36

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


Странно: svn diff есть, а svn patch нет. Есть svn merge, но выполняет она несколько иную функцию.
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Sergei I. Gorelkin » 18.04.2007 12:26:57

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


Пользуясь tortoisesvn, об этом как-то не задумывался. Но по логике наложение заплаток никак не связано с наличием svn и должно нормально делаться при помощи обычного patch. А потом уже commit обычным порядком.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение shade » 18.04.2007 12:40:25

Я пробовал обычным patch, но он похоже глюканул, ладно, я просто хотел посмотреть как это работает
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение bw » 18.04.2007 19:16:15

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

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

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Сообщение rv82 » 23.04.2007 12:11:46

Вот чего бы мне хотелось, так это сделать так, чтобы компилятор FPC был регистрозависимым. Сделать бы для этого специальный ключ.
rv82
новенький
 
Сообщения: 15
Зарегистрирован: 23.04.2007 10:28:43

Сообщение alexs » 24.04.2007 01:29:27

не надо pascal превращать в C
:-)
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

Рейтинг@Mail.ru