Работа со строками
От: Тепплый Снег  
Дата: 26.08.05 10:47
Оценка:
добрый день.
Вопрос такой .Есть функция, которая читает из ини файла строки :

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


Вопрос такой можно ли эти две строки собрать в одну ? Чтобы дважды не вызывать функцию .
Re: Работа со строками
От: Тепплый Снег  
Дата: 26.08.05 10:48
Оценка:
Здравствуйте, Тепплый Снег, Вы писали:

ТС>добрый день.

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

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


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


Заранее благодарен
Re: Работа со строками
От: Dimonka Верблюд  
Дата: 26.08.05 10:55
Оценка:
Здравствуйте, Тепплый Снег, Вы писали:

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


Всё зависит от задачи, от размеров файла, от частоты обновления файла. Можно передавать в функцию не один идентификатор, а список и автоматически склеивать сообщения. Можно файл загрузить в память и обращаться уже к строкам в памяти. Вариантов много — можно вволю пофантазировать.
Re[2]: Работа со строками
От: Тепплый Снег  
Дата: 26.08.05 11:10
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Здравствуйте, Тепплый Снег, Вы писали:


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


D>Всё зависит от задачи, от размеров файла, от частоты обновления файла. Можно передавать в функцию не один идентификатор, а список и автоматически склеивать сообщения. Можно файл загрузить в память и обращаться уже к строкам в памяти. Вариантов много — можно вволю пофантазировать.


Хм..
Думаю нецелесообразно столько строк в памяти держать , легче один раз прочесть по мере необходимости и показать , а потом удалить строку ... Может юзер так и не нажмет на эту кнопку и не увидет сообщения ..
В любом случае спасибо ... Буду фантазировать
Re: Работа со строками
От: kavlad Россия http://www.wavesoft.ru
Дата: 26.08.05 11:12
Оценка:
Здравствуйте, Тепплый Снег, Вы писали:

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


Если строки из ини часто используются, то может вообще при инициализации все их прочесть в память?
Распознавание изображений на Delphi http://dfreader.sourceforge.net
Re: Работа со строками
От: Аноним  
Дата: 26.08.05 11:16
Оценка: +1
Здравствуйте, Тепплый Снег, Вы писали:

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


mes1=Файл %s будет удален

FormatString(mes1, [FileName]);
Re[2]: Работа со строками
От: Тепплый Снег  
Дата: 26.08.05 11:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Тепплый Снег, Вы писали:


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


А>mes1=Файл %s будет удален


А>FormatString(mes1, [FileName]);



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




Format(ShowMyMessage('Msg','msg',ExtractFilePath(Application.ExeName)
  + OPComboBox.Text),[BackupNameTextLb.Caption])


на FormatString Дельфя ругалась

Еще раз всем спасибо
Re: Работа со строками
От: Аноним  
Дата: 26.08.05 12:07
Оценка:
Здравствуйте, Тепплый Снег, Вы писали:

ТС>Например если я должен вывести сообщение типа "Файл Такой-то будет удален".


test.ini
[message]
    mes0=Файл %s будет удален


в программе
ShowMessageFmt(ShowMyMessage('message', 'msg0', 'test.ini'), ['Такой-то']);
Re[3]: Работа со строками
От: KaBoom Чехия  
Дата: 27.08.05 05:57
Оценка:
Здравствуйте, Тепплый Снег, Вы писали:

ТС>на FormatString Дельфя ругалась


В дельфях просто Format
Re: Работа со строками
От: AlexWlad  
Дата: 28.08.05 07:56
Оценка:
Здравствуйте, Тепплый Снег, Вы писали:

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


ТС>mes1=Файл

ТС>mes2=будет удален
ТС>а потом их собирать вместе

StringReplace + F1
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.