Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

еще раз про 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");


Наверх

Титульная страница Поиск, карта сайта Написать письмо