![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа со строками [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]
> Мне приходиться в ин файле создавать две строки
это зачем еще ?
что значит "приходится" ? тебя кто-то заставляет хранить инф-цию именно в такомвиде ?