Иллюстрированный самоучитель по Tirbo Pascal



              

Строковые ресурсы


Списки строк используются в программах Turbo Vision очень часто, поэтому специально для этого вида ресурсов разработаны два особых объекта - TStrListMaker и TStringList. С помощью TSrtListMaker создается строковый ресурс, а с помощью TStringList ранее созданный строковый ресурс становится доступен программе. Предполагается, что создание строкового ресурса и его использование осуществляется в разных программах, поэтому обоим объектам в Turbo Vision присвоен один и тот же регистрационный номер. По той же причине TStrListMaker имеет метод Put, но не имеет метода Get, a TStringList, наоборот, имеет Get и не имеет Put.

В отличие от остальных ресурсов доступ к строковым ресурсам осуществляется по индексам. Таким образом, Ваша программа становится независимой от языка, используемого для вывода сообщений. Чтобы поместить на экран ту или иную информацию, достаточно указать индекс нужного сообщения и в зависимости от используемого файла строкового ресурса сообщение будет выведено на нужном языке.

В двух следующих программах иллюстрируется создание и использование строкового ресурса. В программе CreateStringRes создается строковый ресурс, содержащий все строки текста программы. Константы NStr и SizeStrRes определяют количество строк и общую длину строкового ресурса в байтах. В нашем примере эти величины заранее не известны и выбираются приблизительно, но так, чтобы в ресурсе гарантированно разместился бы весь текст программы. В реальной программе они должны выбираться, исходя из конкретной задачи.

Program CreateStingRes;

{Эта программа создает строковый ресурс}

Uses Objects;

const

SizeStrRes = 2000; {Общая длина всех строк в ресурсе}

NStr = 40; {Общее количество строк} 

var

f: text; {Файл с текстом программы}

ProgText: TResourceFile;

Strings : TStrListMaker; {Строковый ресурс}

k: Integer;

s: String; 

begin

s := copy(ParamStr(0),1,pos('.',ParamStr(0)));

Assign(f,s+'PAS');

Reset(f); {Открываем файл с текстом программы}

RegisterType(RStrListMaker); {Регистрируем объект}




Содержание  Назад  Вперед