Я работаю над модернизацией и исправлением ошибок в кодовой базе Delphi 4-era программы, написанной кем-то другим. Много кода по современным стандартам немного пугает, и я не могу не задаться вопросом, есть ли там что-то из того, что я вижу, потому что автор оригинала не знал о некоторых возможностях стандартной библиотеки, или они были недоступны.
Один из более отвратительных "шаблонов", которые я вижу по всему приложению, выглядит следующим образом:
table := TClientDataset.Create;
with table do
begin
CloneCursor(dmDatabase.OriginalTable, false, true);
filtered := true;
active := true;
first;
while not EOF do
begin
if fieldByName('whatever').AsString = 'some criteria' then break;
next;
end;
if EOF then exit;
//do something based on the current row of the dataset
table.free;
end;
Почти каждая из этих групп может быть заменена однострочным вызовом либо Lookup
, либо Locate
в оригинальном наборе данных, без необходимости использования промежуточных CDS вообще. Это заставляет меня задуматься, были ли эти методы доступны еще в дни D4? Когда Lookup
и Locate
были впервые добавлены?