![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Сразу к делу:
Код:
procedure EMNPGraph.LoadFromFile(const FileName: TFileName);
var
Stream : TStream;
Size : Integer;
Buffer: TBytes;
begin
Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
Size := Stream.Size - Stream.Position;
SetLength(Buffer, Size);
Stream.Read(Buffer, 0, Size);
// что дальше необходимо делать с Buffer чтобы извлечь из него информацию
finally
Stream.Free;
end;
end;Файл, из которого считывается информация имеет следующий вид: Код:
2453 131 2454 137 2455 111 2456 120 2457 127 2458 148 Как грамотно импортировать данные в два "безразмерных массива"? Код:
X : array of longint; Y : array of longint; |
|
#2
|
|||
|
|||
|
Лучше тут FileStream не использовать.
читай либо через TStringList, либо через стандартные паскалевские файловые операции. |
|
#3
|
||||
|
||||
|
Цитата:
Причина такого "лучше"? У меня файл на от 11к до 65к каналов (т.е. строк) |
|
#4
|
||||
|
||||
|
Сложность реализации и отсутствие гибкости.
|
|
#5
|
||||
|
||||
|
Цитата:
на 22к стандартным while not EoF(graphFile) do потрачено 98 секунд. Это никуда не годится. И всё же?... ![]() |
|
#6
|
||||
|
||||
|
Проще всего через TStringList. Он сам разнесет на список строк. Сразу же получаешь размер результирующих массивов, выделяешь, в первый кладешь все до пробелов (через POS), во второй - все после. Если вначале есть пробелы - можно вылечить через trim. Или просто поискать первый не пробел.
|
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Uniq! (05.03.2013)
| ||