Подскажите, пожалуйста, как одним махом из нетипизированного файла считать иформацию в переменную типа String. То есть, допустим есть файл и из него мне надо с произвольной позиции считать 300 байт. Заранее спасибо.
Приложение: Ответ отправлен: 09.07.2003, 20:17 Отправитель: Артём Шегеда Отвечает vitya
Доброе время суток, SiLver!
Я предложу решить саму задачу по другому. Спроецируй файл в память (функции CreateFile, CreateFileMapping, MapViewOfFile, UnmapViewOfFile, CloseHandle). И тогда у тебя будет замечательный char * указатель и ты сможешь в любую позцию писать и читать. Ответ отправлен: 10.07.2003, 08:59 Отправитель: vitya Отвечает ART_43
Доброе время суток, SiLver! SetLength(s,300); BlockRead(f,s[1],300); Ответ отправлен: 10.07.2003, 09:06 Отправитель: ART_43 Отвечает URiS
Здравствуйте, SiLver! С произвольной позиции можно считать, перейдя на эту позицию процедурой Seek(file,pos). Но 300 байт в один String не поместятся, максимум - 255!
Ответ отправлен: 10.07.2003, 13:31 Отправитель: URiS Отвечает valter
Доброе время суток, SiLver! Для этого нужно использовать процедуру BlockRead. Только имей в виду, что даная процедура использует переменную типа PChar. С приведением типов, думаю, разберешься сам. :) Ответ отправлен: 10.07.2003, 18:08 Отправитель: valter Отвечает Bob Johnson
Доброе время суток, SiLver! Можно выделить себе буфер под эти 300 + 1 байт (getmem?), затем туда прочитать файл с нужного места, дописать в конец 0 и что-типа этого:
var p : pointer; s : string; ... begin _получение памяти и чтение в нее файла + 0 в конце_ s := pchar (p);
Вроде должно работать...
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 10.07.2003, 23:10 Отправитель: Bob Johnson
Вопрос № 772
Уважаемые эксперты! Пытаюсь сделать экспорт данных из DBGrid в таблицу MS Word. Хочу при количестве столбцов, большем константы MAXCOLSFORPORTRET, делать альбомную ориентацию. Поэтому перед собственно созданием таблицы есть такой код. //------------------------------------------------ m_WordApp.Visible := True; m_WordApp.PrintPreview := False; m_WordDoc.Activate; if Columns.Count > MAXCOLSFORPORTRET then with m_WordApp.ActiveDocument.PageSetup do Orientation = wdOrientLandscape; //------------------------------------------------ В отладчике видно, что при количестве столбцов, которое больше заданного числа, программа вроде бы выполняет последнюю строку, т.е. точка останова там срабатывает. Но: в Word ничего не меняется! Документ по-прежнему ориентирован стандартно... В чем дело?
Добрый день, L_Dorrit! Пробовал делать тоже самое, все работает нормально. Ищи проблему в другом месте (может с вордом что-нибудь) Ответ отправлен: 10.07.2003, 09:16 Отправитель: ART_43
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.