![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
еще раз про iniФайлы [D5, Win95/98, NT4]
~Alice~ © (2002-01-07 20:38:00)Всем привет! помогите плизз!
тут такое дело имеется листбокс в котором несколько строк все это надо записать в ini файл, делаю так заношу в переменную типа вот так:
s:="";
s:=s+listbox1.items.string[i]+"|";
в ini файле получается запись типа этой
wokfolder=c:\1|c:\2|c:\3|
Вопрос как мне при последующей загрузке формы все это считать обратно в листбокс (вроде как при обнаружении "|" -next).
спасибо заранее
ValeraVV (2002-01-08 07:06:00) [1]Можно использовать свойство ListBox.Items.CommaText, см. help
Lists the strings in the TStrings object in system data format (SDF).
property CommaText: string;
Description
Use CommaText to get or set all the strings in the TStrings object in a single comma-delimited string.
When retrieving CommaText, any string in the list that include spaces, commas or quotes will be contained in double quotes, and any double quotes in a string will be repeated.
StelZ (2002-01-08 01:09:00) [2]Ну, вообще-то, можно и так (s - строка в ini, x - разделитель):
var
a: string;
begin
for i:=1 to length(s) do
begin
if s[i]=x then
begin
listbox1.Items.add(a);
a:="";
end
else a:=a+s[i];
end;
end;
Вот. Тогда listbox сразу заполняется... Теоретически должно работать :)
~Alice~ (2002-01-07 22:46:00) [3]ок спасиб
завтра попробую
3d[Power] (2002-01-07 21:57:00) [4]Вот супер сырая функция, работоспособность не гарантирую, но если ее не напрягать то работает:
Function strpar(s : string; i: integer) : string;
var z : integer;
delim : integer;
begin
if s = "" then begin result := ""; exit;end;
delim := 0;
if i > 0 then begin
for z := 1 to length(s) do begin
if s[z] = "|"then inc(delim);
if delim = i then begin delim := z+1; break end;
end;
if delim < i then begin result := ""; exit;end;
end else delim := 1;
if delim = 0 then begin result := ""; exit; end;
//showmessage(s[delim]);
for z := delim to length(s) do
if (s[z] = "|") then
begin result := copy(s,delim, z-delim); exit end;
result := copy(s,delim,length(s)-delim+1);
end;
Символ помеченный жирным используется в качестве разделителя.
если у тебя стринг "dear|flower|other"
то strpar("dear|flower|other", 0) выдаст "dear".
то strpar("dear|flower|other", 1) выдаст "flower".
~Alice~ (2002-01-07 21:48:00) [5]как раз так сейчас и работает но получается много файлов которые в принципе не нужны можно же как то все запихать в ini
3d[Power] (2002-01-07 21:11:00) [6]А чем тебе не подходит?:
listbox1.items.savetofile("a.txt");
listbox1.items.loadfromfile("a.txt");