djdtyfhu
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору akaGM Спасибо за указание на то в какую сторону смотреть. Сделал чтение символьных данных через функции Delphi: Код: procedure TForm1.btReadCHERTClick(Sender: TObject); type TTypeCHAR=array[1..1000,1..4] of char; var F:file; buf:TTypeCHAR; // буфер для отдельных символов bufSTR:array[1..1000] of string[4]; // буфер для отдельных подстрок bufCHERT:array[1..250] of string; // буфер для полных названий чертежей bufTYPCHERT:array[1..250,1..2] of single; // буфер для номера типа чертежа filename:string; RECLEN:Integer; i:integer; CHERTEZH:array [1..1000] of string; // массив названий чертежей, где индекс массива это тип чертежа begin RECLEN:=SizeOf(buf); filename:=edFileName.Text; AssignFile(F, filename); Reset(f,RECLEN); // открываем нетипизированный файл с размером записи в 4000 байт Seek(F,119-1); // перемещаемся на 119 запись BlockRead(f, buf,1); // читаем CHERTEZH Seek(F,120-1); // перемещаемся на 120 запись BlockRead(f, bufTYPCHERT,1); //читаем TYPCHERT CloseFile(f); for i := 1 to 1000 do // объединяем отдельные символы в подстроке bufSTR[i]:=buf[i,1]+buf[i,2]+buf[i,3]+buf[i,4]; for i := 1 to 250 do // объединяем отдельные подстроки в название чертежа begin bufCHERT[i]:=bufSTR[4*i-3]+bufSTR[4*i-2]+bufSTR[4*i-1]+bufSTR[4*i]; Q_StrToAnsi(bufCHERT[i]); // переводим в кодировку Windows end; for i := 1 to 250 do // пишем итоговый массив begin if Trunc(bufTYPCHERT[i,1])=0 then Continue; Form1.Memo1.Lines.Append(IntToStr(i) + ' ' + IntToStr(Trunc(bufTYPCHERT[i,1])) + ' ' + bufCHERT[i]); CHERTEZH[Trunc(bufTYPCHERT[i,1])]:=bufCHERT[i]]; end; ShowMessage(CHERTEZH[55]); end; | Но от Фортрана все равно не уйти: иначе никак не узнать в какой по счете записи находятся нужные данные, а так уже сделал класс с функциями для чтения нужных данных. |