Помощь новичкам

Что мешает попробовать прочитать из реестра любую строчку и попытаться ее перезаписать? При невозможности записи возникнет исключение, его можно перехватить ( try - catch ) и выдать соответствующее сообщение.

Обычно это делается через файл манифеста:

ProgramName.exe.manifest

Это файл с простейшими настройками в XML формате. Тот что я скинул уже настроен так чтоб запрашивать права админа когда будет запущен .exe .
Он должен лежать в папке рядом с .exe чтоб работать.

Его так же можно засунуть внутрь .exe. Вот тут можете видеть пример как:

Посмотрите на строчку 94.

Здравствуйте. Не подскажите, как компилировать и создать exe файл (консоль и визуал) чтобы программа запустился в планшетах и моб.телефонах под андроид (например Samsung galaxy tab7, tab10,…)

Для запуска PABC.Net надо, в первую очередь, чтоб была установлена платформа .Net . На сколько я понимаю, на данный момент - единственный способ это поставить mono на телефон и запускать под ним. Но там полно проблем, и про то как использовать данные гироскопа и т.п. надо будет ещё поискать.

Здравствуйте! Подскажите пожалуйста, как или с помощью какой программы можно откомпилировать программы PascalABC.Net, чтобы работал а системе АНДРОИД (планшеты, мобил.телеф.). Заранее благодарю!

Никак.

1 лайк

В четырёх тестовых файлах имеются списки по более 1000 слов.

Как можно вставить эти данные из файлов в массивы, чтобы после компиляции в ехе обойтись без внешних файлов ?

Спасибо.

$resource

Потом читать через GetResourceStream.

В Справке не нашёл, а на Киберфоруме есть пример:

{$reference 'System.Windows.Forms.dll'}
{$resource 'list.txt'}

function ReadArray(name: string): array of string;
begin
  result := (new StreamReader(GetResourceStream(name), System.Text.Encoding.Unicode)).
            ReadToEnd().Split(new string[1](NewLine), System.StringSplitOptions.None);
end;

begin
  var r := readarray('list.txt')
end.

Что указать, чтобы не выдавало ошибку: "resurz.pas(6) : Неизвестное имя 'StreamReader' " ?

Спасибо.

System.IO.StreamReader

А вообще…

{$resource 'list.txt'}

function ReadArray(name: string) :=
System.IO.StreamReader.Create(GetResourceStream(name))
.ReadToEnd.ToWords;

begin
  ReadArray('list.txt')
  .PrintLines;
end.

Да, работает даже без внешнего файла, спасибо.

Вопрос: для чего в папке Output со скомпилированным ехе одноимённый файл с расширением pdb меньшего размера ? Его можно как-то использовать или это временный файл ?

Этот файл содержит данные для дебага. Когда бросается исключение - без этого файла не будут выписываться номера строчек стека.

В примерах есть Applications/TextEditor - там тоже есть использование ресурсов

Смотрю и думаю: а чего тут от Паскаля? PrintLines ? Если делается exe-файл, какая разница, на чем он написан?

1 лайк

Вы про что? Это же пример кода, который в любую паскалевскую программу вставить можно. А так - GetResourceStream и .ToWords тоже чисто паскалевские.

Application.GetResourceStream(Uri) Method

Пространство имен: System.Windows

А вы пробовали Ctrl+тыкнуть на эту функцию, перед тем как говорить что она находится в библиотеке, которая по-умолчанию даже не подключена?

Вот я только что тыкнул, и получил эти строчки в PABCSystem:

function GetResourceStream(ResourceFileName: string): Stream;
begin
  Result := System.Reflection.Assembly.GetEntryAssembly().GetManifestResourceStream(ResourceFileName);
end;

Да я лишь к тому, что это не своя Паскалевская придумка, а взято из .NET, поэтому аналогичный вызов есть в любом .NET - языке. Т.е. если это все повторить VB.NЕТ, к примеру, код будет почти такой же, Программирование на том или ином языке постепенно теряет свою уникальность.

1 лайк

Ну и что? В паскале всё реализовано через .Net. Каждый тип и подпрограмма в PABCSystem работают через внутренности .Net.

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

1 лайк