Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.11;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
14-33312
AlexRush
2003-07-24 14:43
2003.08.11
Встраиваемый Движок Flash.


14-33303
Саня
2003-07-24 13:43
2003.08.11
Привет Мастера!


14-33268
VEG
2003-07-25 22:12
2003.08.11
Опять проблема в Си, только странная...


1-33150
elen
2003-07-28 10:54
2003.08.11
Создание Web Application


14-33336
DeScriptor
2003-07-25 04:52
2003.08.11
CRC