выставить файловый указатель в csv в произвольном месте

 
Нужно читать поочереди значения из, например 5 столбца, в файле csv.
Столбцы перед ним разных типов - string, int, double, а также имеют разную длинну,  поэтому нельзя просто рассчитать смещение в байтах...
Может кто-то разрешал подобный вопрос?
 
Mihail:
Нужно читать поочереди значения из, например 5 столбца, в файле csv.
Столбцы перед ним разных типов - string, int, double, а также имеют разную длинну, поэтому нельзя просто рассчитать смещение в байтах. ..
Может кто-то разрешал подобный вопрос?

обычно в csv в качестве разделителя колонок используется -  ;    можно найти нужную колонку просто отсчитав разделители
 
FileSeek(handle, 0, SEEK_SET);
int k,i;
for (i=1;i<=1000; i++)
{
if (FileIsEnding(handle))break;
if (FileReadString(handle,1)=="коэфф2") {znN[k]=StrToDouble(FileReadString(handle,1));k++;}
}
FileClose(handle);

Если перед нужным столбцом, находится столбец string, то нужный столбец отправляется в массив.
 
Может кому пригодится...

А по хорошему, конечно добавить нормальную функцию, которая выставляет файловый указатель в такихто строке и столбце файла csv.
 

Сабж нет и не можеть быть. Все строки имеют разные длины и поэтому нельзя вычислить где начнет n-тая строка. Лучше в самом начале прочитайте все локально, в памяти и потом ищите то, что вам нужно.

Или вообще сохраняйте в binary format - там с этим нет проблем.

 
Mihail:
Может кому пригодится...

А по хорошему, конечно добавить нормальную функцию, которая выставляет файловый указатель в такихто строке и столбце файла csv.

Вы можете использовать структурированный файл. тогда при каждом чтении будет читаться сразу массив со всеми значениями и не надо ничего парсить
Причина обращения: