Dimon.Ru |
Отправлено: 09.11.2004, 11:16 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
Доброе время!
Столкнулся с такой проблемой: мне нужно читать из ini-файла ОЧЕНЬ длинную строку: 8-10 тыс. символов.
но почему-то при чтении строки длиной больше 2047 символов читаются только первые 2047 символов, а остальное игнорируется.
можно ли как-то это обойти? или это особенность класса TIniFile? |
|
Konstantine |
Отправлено: 09.11.2004, 11:55 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
если у тебя на разделы не поделено — а просто Name=Value, то сделай просто через TStringList
|
|
Dimon.Ru |
Отправлено: 09.11.2004, 12:11 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
к сожалению, на разделы поделено....
наверное придется через чтение текстового файла делать
Отредактировано Dimon.Ru — 09/11/2004, 13:15 |
|
Gedeon |
Отправлено: 09.11.2004, 14:55 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Ну а че, в исходники, вот эта функция файл: inifiles.pas
CODE |
function TIniFile.ReadString(const Section, Ident, Default: string): string;
var
Buffer: array[0..2047] of Char;
begin
SetString(Result, Buffer, GetPrivateProfileString(PChar(Section),
PChar(Ident), PChar(Default), Buffer, SizeOf(Buffer), PChar(FFileName)));
end;
procedure TIniFile.WriteString(const Section, Ident, Value: string);
begin
if not WritePrivateProfileString(PChar(Section), PChar(Ident),
PChar(Value), PChar(FFileName)) then
raise EIniFileException.CreateResFmt(@SIniFileWriteError, [FileName]);
end;
|
Меняйте и юзайте. Надо либу перебилдить.
От тока если динамик ртл любите тада хуже будет, поэтому для уверенности линкуйте все в файл.
|
|
Dimon.Ru |
Отправлено: 09.11.2004, 15:05 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
QUOTE | Меняйте и юзайте. Надо либу перебилдить.
От тока если динамик ртл любите тада хуже будет, поэтому для уверенности линкуйте все в файл. |
Жаль, что можно только так (((
спасибо , но этот вариант мне не подходит. буду мучиться с чтением простого текстового файла. |
|
xTrim |
Отправлено: 09.11.2004, 15:43 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
Можно воспользоваться функцией GetPrivateProfileString или вот оболочечкой к ней. только величену буфера по желанию подправить надо. читает вроде до 56000 символов.
пример:
CODE |
#include "sys_ini.h"
...
Ini_file ini("test.ini");
AnsiString s = ini.get("tst","tst","");
Caption = IntToStr(s.Length());
|
|
|
Dimon.Ru |
Отправлено: 09.11.2004, 16:30 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
Спасибо, буду пробовать!!!! |
|