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

Вниз

Работа со строками   Найти похожие ветки 

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

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

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));


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


 
Digitman ©   (2005-08-26 15:18) [1]


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


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


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

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


 
Leonid Troyanovsky ©   (2005-08-26 15:30) [3]


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


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

--
Regards, LVT.


 
Digitman ©   (2005-08-26 15:32) [4]


> Теплый Снег ©   (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:37) [5]


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

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

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


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

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

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

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

--
Regards, LVT.


 
han_malign ©   (2005-08-26 15:39) [6]

>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])


 
Erik1 ©   (2005-08-26 15:53) [7]

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


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

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

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

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

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

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

Мое почтение


 
Джо ©   (2005-08-26 15:56) [9]

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

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

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


В таком духе.


 
Джо ©   (2005-08-26 15:57) [10]


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

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



Страницы: 1 вся ветка

Текущий архив: 2005.10.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.039 c
4-1123746902
Huliganka
2005-08-11 11:55
2005.10.09
Вопрос: Как обновить рабочий стол (Desktop)?


3-1124878124
DeStranger
2005-08-24 14:08
2005.10.09
кодировка в Oracle


1-1127135360
Slaga
2005-09-19 17:09
2005.10.09
BPL в Delphi


5-1102660951
FunkyByte
2004-12-10 09:42
2005.10.09
Как в StringGrid перекрыть InplaceEditor?


6-1118596832
Николай,герм
2005-06-12 21:20
2005.10.09
подскажите пожалуста как заставить WebBrowser1