Форум: "Основная";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
ВнизTStrings и TListView Найти похожие ветки
← →
Lt (2003-07-29 11:04) [0]День добрый. Помогите разобраться. Почему не работает код:
var
I: Byte;
fIni: TIniFile;
St: TStrings;
begin
fIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + "DWGbase.ini");
if fIni.SectionExists("порядок сортировки") then
begin
St := TStrings.Create;
fIni.ReadSection("порядок сортировки", St);
for I := 0 to St.Count - 1 do
ListView2.Items[I].Caption := St.Strings[I];
St.Free;
end;
fIni.Free;
end;
← →
Hint (2003-07-29 11:08) [1]TStrings абстрактный класс. Используйте TStringList
← →
HolACost (2003-07-29 11:11) [2]Вопрос интересный - что не работает?
← →
Zergling (2003-07-29 11:19) [3]if fIni.SectionExists("порядок сортировки") then
begin
// Он у тебя в if и не заходит вовсе. Отсюда следует ...
end;
← →
Lt (2003-07-29 11:21) [4]А не работает - ругается на абстрактный класс
← →
Zergling (2003-07-29 11:25) [5]fIni.SectionExists("порядок сортировки") возвращает false
← →
Zergling (2003-07-29 11:40) [6]Извеняйте за предыдущие посты. У меня там опечатка была.
Вот так у меня работает. Пробуй.
procedure TForm1.Button2Click(Sender: TObject);
var
I: Byte;
fIni: TIniFile;
St: TStringList;
begin
St := TStringList.Create;
fIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + "DWGbase.ini");
if fIni.SectionExists("порядок сортировки") then Caption := "Да";
fIni.ReadSection("порядок сортировки", St);
begin
fIni.ReadSection("порядок сортировки", St);
for I := 0 to St.Count - 1 do
ListView2.Items[I].Caption := St.Strings[I];
St.Free;
end;
fIni.Free;
end;
← →
Юрий Зотов (2003-07-29 11:50) [7]А еще лучше использовать try-finally. Причем дважды.
← →
mrcat (2003-07-29 11:53) [8]Lt (29.07.03 11:04)
Для начала было бы неплохо определить задачу, т.к. смысл Вашего кода вызывает сомнение: ну зачем пользователю знать, какие секции содержит ini-файл?
← →
VMcL (2003-07-29 11:54) [9]>Zergling © (29.07.03 11:40)
Отличный пример того... как не надо делать.
← →
Юрий Зотов (2003-07-29 12:11) [10]Да о чем спор-то? В вопросе дан нормальный код, только надо убрать абстрактный класс, лишнюю переменную, лишнюю строку и дважды добавить try-finally, вот и все.
const
Section = "порядок сортировки"; // Чтобы без дублей
var
i: integer; // Здесь integer лучше, чем byte
St: TStrings;
begin
with TIniFile.Create(ExtractFilePath(ParamStr(0)) + "DWGbase.ini") do
try
if SectionExists(Section) then
begin
St := TStringList.Create;
try
ReadSection(Section, St);
for i := 0 to St.Count - 1 do
ListView2.Items[i].Caption := St[i]
finally
St.Free
end
end
finally
Free
end
end;
← →
AbrosimovA (2003-07-29 12:13) [11]Лучше так:
var
I: Byte;
fIni: TIniFile;
begin
fIni := TIniFile.Create(ExtractFilePath(ParamStr(0))+
"DWGbase.ini");
if fIni.SectionExists("порядок сортировки") then
fIni.ReadSection("порядок сортировки", ListBox1.Items);
fIni.Free;
end;
← →
Zergling (2003-07-29 12:18) [12]VMcL © (29.07.03 11:54)
Я и не стремился особо попралять код от Lt
Фактически я ему немного подправил егоже переменную St
Сей пост у тебя созрел скорее всего после поста Юрия Зотова
← →
AbrosimovA (2003-07-29 12:20) [13]I: Byte в моем примере не нужен
← →
Alexsum (2003-07-29 12:27) [14]а я бы попробовал поменять
St := TStrings.Create;
на
St := TStringList.Create;
← →
VMcL (2003-07-29 12:32) [15]>Zergling © (29.07.03 12:18)
procedure TForm1.Button1Click(Sender: TObject);
var
I: byte;
fIni: TIniFile;
St: TStringList;
begin
St := TStringList.Create;
fIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + "DWGbase.ini");
if fIni.SectionExists("порядок сортировки") then Caption := "Да";
fIni.ReadSection("порядок сортировки", St);
begin
fIni.ReadSection("порядок сортировки", St);
for I := 0 to St.Count - 1 do
ListView2.Items[I].Caption := St.Strings[I];
St.Free;
end;
fIni.Free;
end;
+ Юрий Зотов © (29.07.03 11:50)
← →
Lt (2003-07-29 12:51) [16]Закавыка для меня была именно в использовании абстрактного класса. Всем списибо. Особенно Zergling и Hint за ответ на вопрос, Юрию Зотову за оптимизацию кода, АбросимовОй :) за подзатыльник - видимо перейду от ListView к ListBox.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c