Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как перекомпилировать модуль 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]

Цель какая?


Наверх

Титульная страница Поиск, карта сайта Написать письмо