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

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

Работа со строками [D7, WinXP]


Теплый снег ©   (2005-08-26 15:13:00) 

добрый день.
Вопрос такой .Есть функция, которая читает из ини файла строки :

function ShowMyMessage(SectionName, MsgID, FileName: string): string;
var
 IniFile: TIniFile;
begin
 IniFile := TIniFile.Create(FileName);
 Result := IniFile.ReadString(SectionName, MsgID, 'No Comments :)');
 IniFile.Free;
end;


Функция работает нормально , Но есть один нюанс.Например если я должен вывести сообщение типа "Файл Такой-то будет удален". Мне приходиться в ин файле создавать две строки :

mes1=Файл
mes2=будет удален
а потом их собирать вместе

ShowMessage(ShowMyMessage('Msg','msg1',ExtractFilePath(Application.ExeName)
   + OPComboBox.Text) + BackupNameTextLb.Caption +
   ShowMyMessage('Msg','msg2',ExtractFilePath(Application.ExeName)
   + OPComboBox.Text));


Вопрос такой можно ли эти две строки собрать в одну ? Чтобы дважды не вызывать функцию .
Заранее спасибо


Джо   (2005-08-26 15:57:00) [1]


> [6] han_malign ©   (26.08.05 15:39)

Сорри, не доглядел.


Джо   (2005-08-26 15:56:00) [2]

Лучше использовать функцию Format или другие, основанные на ней.
Например:

Inifile:
...
Msg1=Файл %s будет удален.
...

// Код:
S := ReadString (...);
ShowMessageFmt (S,[FileName]);


В таком духе.


Теплый Снег   (2005-08-26 15:55:00) [3]

Спасибо всем получилось так :

mes=Файл %s будет удален
Format(ShowMyMessage('Msg','msg',ExtractFilePath(Application.ExeName)
 + OPComboBox.Text),[BackupNameTextLb.Caption])

han_malignспасибо тебе большое , не то я с FormatString мучался  :) о Format и не подумал ...

Всем огромное спасибо...

З.ы.
На самом деле держать строки сообщений в одном ини файле намного удобнее чем разбрасывать сообющения по всему коду ...
В любой момент можно поменять (исправить ) нужное сообщение...
И еще при необходимости можно эту инишку использовать для переводя приложения на другие языки ...

Мое почтение


Erik1   (2005-08-26 15:53:00) [4]

А каждый раз создовать экземпляр TIniFile немуторно? Можно один раз создать и сделать ReadString сколько душе угодно.


han_malign   (2005-08-26 15:39:00) [5]

> ShowMyMessage('Msg','msg1',ExtractFilePath(Application.ExeName)
  + OPComboBox.Text) + BackupNameTextLb.Caption +
  ShowMyMessage('Msg','msg2',ExtractFilePath(Application.ExeName)
  + OPComboBox.Text)


mes=Файл %s будет удален
Format(ShowMyMessage('Msg','msg',ExtractFilePath(Application.ExeName)
  + OPComboBox.Text),[BackupNameTextLb.Caption])


Leonid Troyanovsky   (2005-08-26 15:37:00) [6]


> Digitman ©   (26.08.05 15:32) [4]

> > Именно в таком виде и приходиться  

> ну и глупо, я бы сказал ..


Отнюдь. Вместо "файла" можно поставить, скажем "текст".
Вариантность больше, меньше строк хранить.

> ЧТО мешает организовать ini-файл, например, со след.структурой

> msg1 = Файл 1
> msg2 = Файл 15
> msg3 = Файл 4
> msg4 = Файл 35

Вот это, действительно, неразумно.
Числовой идентификатор сформировать - проще простого.

--
Regards, LVT.


Digitman   (2005-08-26 15:32:00) [7]


> Теплый Снег ©   (26.08.05 15:22) [2]
> Именно в таком виде и приходиться  


ну и глупо, я бы сказал ..

ЧТО мешает организовать ini-файл, например, со след.структурой :

[FileMsgs]

msg1 = Файл 1
msg2 = Файл 15
msg3 = Файл 4
msg4 = Файл 35
msg1Comment = будет удален
msg2Comment = уже удален
msg3Comment = еще не создан

??

тогда

function ShowMyMessage(SectionName, MsgID, FileName: string): string;
var
IniFile: TIniFile;
begin
IniFile := TIniFile.Create(FileName);
with IniFile do
try
 Result := ReadString(SectionName, MsgID, 'No message ') +
           ReadString(SectionName, MsgID+Comment, 'No message "' + MsgID + '" comment');
finally
 Free;
end;
end;


Leonid Troyanovsky   (2005-08-26 15:30:00) [8]


> Теплый Снег ©   (26.08.05 15:22) [2]
> А если серьезно просто интересно , как это сделать .


Можно даже не делать, если воспользоваться TMemIniFile.

--
Regards, LVT.


Теплый Снег   (2005-08-26 15:22:00) [9]

Именно в таком виде и приходиться  :) ...
А если серьезно просто интересно , как это сделать .


Digitman   (2005-08-26 15:18:00) [10]


> Мне приходиться в ин файле создавать две строки


это зачем еще ?
что значит "приходится" ? тебя кто-то заставляет хранить инф-цию именно в такомвиде ?


Наверх

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