Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
4-33404
sizmrebi
2003-06-09 11:56
2003.08.11
Ispolzovanie Sobstvennix shriftov v Menu,Caption.....


1-33218
alexander_ua
2003-07-29 13:44
2003.08.11
---|Ветка была без названия|---


14-33271
vidiv
2003-07-16 14:16
2003.08.11
Вопрос про фреймы в HTML


9-33036
SergeN
2003-02-10 11:07
2003.08.11
С чего начать и стоит ли?


3-33078
Maxim_E.
2003-07-17 22:26
2003.08.11
Был бы обработчик события TDBGrid OnChangeColumnWidth он бы помог





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский