Что мешает попробовать прочитать из реестра любую строчку и попытаться ее перезаписать? При невозможности записи возникнет исключение, его можно перехватить ( try - catch ) и выдать соответствующее сообщение.
Обычно это делается через файл манифеста:
Это файл с простейшими настройками в XML формате. Тот что я скинул уже настроен так чтоб запрашивать права админа когда будет запущен .exe .
Он должен лежать в папке рядом с .exe чтоб работать.
Его так же можно засунуть внутрь .exe. Вот тут можете видеть пример как:
Посмотрите на строчку 94.
Здравствуйте. Не подскажите, как компилировать и создать exe файл (консоль и визуал) чтобы программа запустился в планшетах и моб.телефонах под андроид (например Samsung galaxy tab7, tab10,…)
Для запуска PABC.Net надо, в первую очередь, чтоб была установлена платформа .Net . На сколько я понимаю, на данный момент - единственный способ это поставить mono на телефон и запускать под ним. Но там полно проблем, и про то как использовать данные гироскопа и т.п. надо будет ещё поискать.
Здравствуйте! Подскажите пожалуйста, как или с помощью какой программы можно откомпилировать программы PascalABC.Net, чтобы работал а системе АНДРОИД (планшеты, мобил.телеф.). Заранее благодарю!
В четырёх тестовых файлах имеются списки по более 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-файл, какая разница, на чем он написан?
Вы про что? Это же пример кода, который в любую паскалевскую программу вставить можно. А так - 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ЕТ, к примеру, код будет почти такой же, Программирование на том или ином языке постепенно теряет свою уникальность.
Ну и что? В паскале всё реализовано через .Net
. Каждый тип и подпрограмма в PABCSystem
работают через внутренности .Net
.
Ничего кроме мысли о том, что язык фактически стал просто синтаксической оберткой к набору стандартных вызовов. А предложения по введению в язык тех или иных новаций есть попытка реализовать еще большую унификацию оберток.