вопрос вот какой :
Мне нужно загрузить из текстового файла
записи для последующего анализа,
разделенные между собой построчно
вобщем мой код выглядит так
Procedure LoadDet(FileName:string) ;
var
DetFile:TextFile;
CurStr:string;
I:integer;
Code:integer;
begin
I:=0 ;
SetLength(Details,1);
AssignFile(DetFile,FileName);
Reset(DetFile);
while not SeekEoF(DetFile) do
begin
Readln(DetFile,CurStr);
If CurStr[1]<>'Í' then
begin
Details[i].Phone := StrToInt64(Trim(LeftStr(CurStr,11)));
<........>
Details[i]._Type := Trim(MidStr(CurStr,126,14));
Details[i].SVC_type := Trim(MidStr(CurStr,141,30));
SetLength(Details,I+2) ;
I:=I+1;
end;
end;
CloseFile(DetFile) ;
В массив всё ложиться как положено(Details — это массив записей)
type
Det=Record
Phone:int64;
Date:String;
_Time:string;
RealTime:String;
RoundTime:String;
Price:real;
TelIn:String;
TelOut:String;
Dir:String;
Chanel:String;
_Type:String;
SVC_type:String;
end;
Var
Details:array of Det;
затем
я объявляю рекордсет и добавляю ему поля соответсвующие
так вот при попытке сделать .CreateRecordset или .Open ОНО мне пишет что-то вроже "Can't load Midas.dll" либо , если файл чуть поменьше, "...raised ..NotEnoughMemory"
если файл маленький то всё ОК однако в моём варианте размер файла порядка 3,5 мб и будет расти ...
подскажите плз что делать
я посмотрел в таск манагере остется ок 10 мб оперативной памяти , а файл подкачки не используется вообще ,
может ключи какие надо в компиляторе прописать
и есчо вопрос :как видно грузится всё вутри цикла ,так вот как сделать так чтоб во время выполнения программа не создавала впечатление "зависшей"
Здравствуйте, par, Вы писали:
Для оформления кода на RSDN используются теги RSDN ML. Теги HTML (и <CODE> в том числе) не поддерживаются. Поэтому пользуйтесь, пожалуйста, соответствующими тегами. Для текстов программ на Pascal и Delphi используется тег [pascal][/pascal]. Все доступные теги перечислены ниже окна для ввода текста при постинге сообщения. через веб.
... << RSDN@Home 1.1.3 beta 2 >>
ST>Убрать SetLenght из цикла
Как же мне убрать SetLength если массив динамический и заранее длинна файла неизвестна
par>>и есчо вопрос :как видно грузится всё вутри цикла ,так вот как сделать так чтоб во время выполнения программа не создавала впечатление "зависшей"
ST>вариант 1: в цикле вызывать Application.ProcessMessages
спасиб
ST>вариант 2: запускать цикл в отдельном потоке (TThread)
а вот про TThread можно поподробней чуть
Здравствуйте, par, Вы писали:
ST>>Убрать SetLenght из цикла
par>Как же мне убрать SetLength если массив динамический и заранее длинна файла неизвестна
стратегия выделения памяти не должна быть столь безобразной
лучше TList использовать
а еще лучше переопределить его метод Grow под свою специфику
изначально установить capacity во что-нибудь типа file_size/mean_line_size
при чтении из файла сразу в датасет писать
par>>>и есчо вопрос :как видно грузится всё вутри цикла ,так вот как сделать так чтоб во время выполнения программа не создавала впечатление "зависшей"
ST>>вариант 1: в цикле вызывать Application.ProcessMessages
par>спасиб
ST>>вариант 2: запускать цикл в отдельном потоке (TThread)
par>а вот про TThread можно поподробней чуть
Ctrl+N "Thread Object"
ST>при чтении из файла сразу в датасет писать
Ето я уже и так понял Ж)
я просто тут статейку прочитал про то как SetLength работает и куда СТОЛЬКО памяти уходит
плюнул я на ето
начал прямо в БД писать
там задача такая: есть два массива данных
с одинаковым идентификаторм в поле записи,их надо сгруппировать по этим полям, так вот я хотел
программно всё прописать (в образце то у меня их порядка двухсот было

) , забил ...
решил SQL запросом их друг к другу привязывать
счас у меня порядка 19k записей уже так что походу SQL — единственный выход
может кто подскажет какие другие варианты , так для общего развития
и еисчо есть интегрированный с делфи редактор SQL чтоб с подсветкой строчек
Здравствуйте, par, Вы писали:
par>счас у меня порядка 19k записей уже так что походу SQL — единственный выход
par>может кто подскажет какие другие варианты , так для общего развития
для общего развития Н.Вирт что-то типа "Алгоритмы+структуры данных=программы" (не помню, вроде так называется)
или подобное
не обессудь
par>и еисчо есть интегрированный с делфи редактор SQL чтоб с подсветкой строчек
ага — тот-же, что и pascal-строчки подсвечивает (file->Open "*.sql")