![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как перекомпилировать модуль Classes?
arhis © (2005-10-04 14:54:00)?
icWasya (2005-10-05 16:36:00) [1]Я просто обнаружил эту ошибку, когда поставил компоненту для работы с ZIP архивами и оказалось, что при работе с файлами всё в порядке, а при работе с данными в памяти - какая то лажа. Перерыл 300K исходников и выяснил вот такую бяку в стандартном модуле.
evvcom (2005-10-05 14:58:00) [2]Все-таки похоже здесь [15] я не прав:
soFromEnd Offset is from the end of Memory. Offset must be <= 0 to indicate a number of bytes before the end of the DataString.
Мои извинения Васе. :)
Видимо, хелп писал один человек, а реализацию TStringStream.Seek другой, не глядя на то, что уже написали (или может еще не написали к тому времени?) в хелпе. Но концепция какая-то должна была быть!
Кстати, в TCustomMemoryStream.Seek прописано
soFromEnd: FPosition := FSize + Offset;
evvcom (2005-10-05 12:04:00) [3]
> а надо
> soFromEnd: FPosition := Length(FDataString) + Offset;
>
Это ж почему? Зачем позиции присваивать номер за пределами массива? Да...а...а... Вася. Или у тебя Offset отрицательный? Тогда надо справку смотреть, так ли это?
icWasya (2005-10-05 11:54:00) [4]а кстати по поводу Classes.pas
посмотрите, как реализован метод TStringStream.Seek. У меня и D5,D6 и D7 - и везде с ошибкой
soFromEnd: FPosition := Length(FDataString) - Offset;
а надо
soFromEnd: FPosition := Length(FDataString) + Offset;
evvcom (2005-10-05 11:31:00) [5]
> прям от одного "перекомпила" человек всю жизнь так будет
> делать...
Есть такая поговорка, что детей воспитывают, пока они поперек лавки умещаются.
Antonn (2005-10-05 11:26:00) [6]evvcom © (05.10.05 11:12) [11]
Когда начнет работать в командах, хуже будет его коллегам.
от того, что сейчас перекомпилит модуль?
прям от одного "перекомпила" человек всю жизнь так будет делать...
evvcom (2005-10-05 11:12:00) [7]
> или кому то хуже будет, если он изменит файл
Когда начнет работать в командах, хуже будет его коллегам.
Antonn (2005-10-05 04:43:00) [8]Германн © (04.10.05 17:09) [9]
а вы молчите больше... или кому то хуже будет, если он изменит файл?
Германн (2005-10-04 17:09:00) [9]2 Antonn © (04.10.05 16:37) [8]
И зачем ты ему подлянку кидаешь?
Antonn (2005-10-04 16:37:00) [10]а если classes.pas положить в каталог программы и изменить?
evvcom (2005-10-04 15:47:00) [11]А перекомпилировать то, что не твое и для этого не предназначено, а также вносить исправления в чужие модули, отвыкай. Если есть возможность изменить функциональность унаследовавшись, то наследуйся. Если такой возможности нет, то выбрось такой класс/модуль - он написан неправильно.
arhis (2005-10-04 15:21:00) [12]спасибо
Alexander Panov (2005-10-04 15:19:00) [13]var
List: TStringList;
begin
List := TStringList.Create;
//дальше на твой вкус - List.AddObject, List.Add, List.Objects[i] и т д.
arhis (2005-10-04 15:13:00) [14]
> Alexander Panov © (04.10.05 15:03) [3]
К нему можно обращаться вот так:
Row.Objects[0]:=self;
или нужно вначале создать этот нулевой элемент?
Alexander Panov (2005-10-04 15:03:00) [15]TStrings.Objects?
arhis (2005-10-04 15:00:00) [16]Нужен дополнительный указатель в TStrings, тага там ведь нету.
MBo (2005-10-04 14:57:00) [17]Цель какая?