![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ini файл [D2005, XP]
shaman © (2012-01-23 01:19:00)Подскажите, возможно ли в ini файле хранить многострочное значение?
RWolf (2012-01-23 13:50:00) [1]
> [7]
sl:=TStringList.Create;
sl.CommaText:=Ini.ReadString ('TabSheet5', 'spCheck', '0,0,0,0,0,0');
for i := 1 to s2 do spCheck[i] := StrToIntDef(sl[i], 0);
sl.Free;
i2e (2012-01-23 13:36:00) [2]Как вариант применения, значения массива записал как строку с разделителями-точками между значениями.
Например, запись:
Str := '1.1.2.55.0.0';
Ini.WriteString ('TabSheet5', 'spCheck', Str);
Для чтения написал такую функцию:
function SelectNextNmr(Sx:string): integer;
var cmPos: integer;
begin
S1 := Sx;
cmPos := Pos('.', Sx); // найти '.'
if cmPos <> 0 then begin
Delete(S1, 1, cmPos); // удалить от начала до первой '.' -> S1 для последующ обработки
Delete(Sx, cmPos, Length(Sx)); // удалить от первой '.' до конца
end
else begin // '.' не найдена
if (Length(Sx) > 0) then SelectNextNmr := StrToInt(Sx)
else SelectNextNmr := 0;
S1 := '';
Exit;
end;
SelectNextNmr := StrToInt(Sx);
end;
Чтение:
...
S1 := Ini.ReadString ('TabSheet5', 'spCheck', '');
for N1 := 1 to s2 do spCheck[N1] := SelectNextNmr(S1);
Германн (2012-01-23 12:11:00) [3]
> Но решение есть
не использовать ini-файл в целях, для которых он не предназначен.
Anatoly Podgoretsky (2012-01-23 09:42:00) [4]> Самуилыч (23.01.2012 05:24:02) [2]
Все равно споткнется на длине строке, она очень маленькая. Но решение есть
заменить многострочный однострочным.
RWolf (2012-01-23 09:40:00) [5]TStringList.CommaText, как вариант.
Dimka Maslov (2012-01-23 09:31:00) [6]Можно даже двоичные данные, если применить base64 кодирование
Самуилыч (2012-01-23 05:24:00) [7]Можно, если применить искусственный прием - заменить разделители строк каким-нибудь спецсимволом (например #7)
Германн (2012-01-23 01:21:00) [8]Нет.