![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
dataset->file [D7, XP]
картман © (2010-10-06 09:33:00)Всем привет.
нужно быстро перенести данные из бд в файл.
делать так:
while not query.eof do
begin
StringList.Add(query.FieldByName('aaa').AsString);
query.Next;
end;
StringList.SaveToFile...
долго получается. Если выделить много памяти в PChar и в нее Move переносить - быстрее, но все равно не устраивает. Как добиться такой же скорости, как TADODataSet.SaveToFile?
Anatoly Podgoretsky (2010-10-06 10:07:00) [21]
> Да не, по набору долго перемещает.
Муж спрашивает жену - ты мне изменяешь?
Да не
Так TADODataSet.SaveToFile и так пишет в файл, чего еще?
картман (2010-10-06 10:07:00) [22]TField.GetData - может то?
картман (2010-10-06 09:52:00) [23]ща копирую очередную строку в PChar:
...
tmp := q.FieldByName('asd').AsString + q.FieldByName('asd').AsString;
Move(tmp[1], (strChar + pos)^, Length(tmp));
pos := pos + Length(tmp);
...
в диспетчере задач непрерывно увеличивается размер занятой памяти - это с чего?
картман (2010-10-06 09:46:00) [24]
> Юрий Зотов © (06.10.10 09:41) [1]
пробовал.
Да не, по набору долго перемещает.
Поставлю:
ADOQuery.CursorType:=ctOpenForwardOnly;
а что такое ADOQuery.CursorLocation? Т.е. из названия понятно что, как будет быстрее? Где-то нашел совет ставить на сервере - для такой же проблемы.
Юрий Зотов (2010-10-06 09:41:00) [25]
var
F: TextFile;
befin
AssignFile(...);
Rewrite(F);
while not Query.EoF do
begin
WriteLn(F, Query.Fields[...].AsString);
Query.Next
end;
CloseFile(F)
end;