Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
Теплый снег ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.014 c
1-1127222082
OldNaum
2005-09-20 17:14
2005.10.09
TPanel Vs. XPManifest


14-1127232522
TG
2005-09-20 20:08
2005.10.09
PHP


1-1127242434
Pasha L
2005-09-20 22:53
2005.10.09
компилятор Дельфи


14-1127051821
Gamer
2005-09-18 17:57
2005.10.09
Максимум от i810


4-1123650590
Anonim
2005-08-10 09:09
2005.10.09
Параметры процесса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский