Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 32

Аналог конструкции "%~dp0/bin/x64/factorio.exe" --version > version.txt на pascalABC.net

29.03.2020, 16:47. Показов 1707. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я хочу написать аналог этой конструкции: "%~dp0/bin/x64/factorio.exe" --version > version.txt (.bat) на языке pascalABC.net.
Я думал, что это может сработать:
Pascal
1
ver:=exec('путь до файла', '--version');
Но exec - это процедура, а не функция.
Я бы хотел, чтобы вы предложили аналог этой конструкции.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.03.2020, 16:47
Ответы с готовыми решениями:

This version of ChromeDriver only supports Chrome version 108 Current browser version is 115.0.5790.102
Прошу подсказать, как поправить. from selenium import webdriver from selenium.webdriver.chrome.options import Options # Опции для...

[DCC Fatal Error] firemonkey.dpr(6): F2048 Bad unit format: 'main.dcu' - Expected version: 23.0, Windows Unicode(x64) Found version: 23.0, Windows Uni
На одном из буржуйских форумов нарыл что компонент Delphi Chromium Embedded можно использовать для разработки приложений под MacOS. Раньше...

Ошибка cannot be opened because it is version 782. This server supports version 706 and earlier
Есть проект для которого база данных (далее-БД) создается с использованием Code First При сборке и построении решения ошибок нет. При...

14
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
29.03.2020, 19:28
1. Exec не только процедура, но ещё и огрызок. Для начала зажмите Ctrl и нажмите на Exec (в IDE, конечно), увидите это:
Pascal
1
2
3
4
procedure Exec(filename: string);
begin
  System.Diagnostics.Process.Start(filename)
end;
Вот Process.Start - это уже функция. Вот только она возвращает запущенный процесс. Это почти, но, вроде, не то что надо.

2. Как раз насчёт того что надо - --version это аргумент командной строки. Каждый .exe по своему обрабатывает свои аргументы (или не обрабатывает вообще). А значит не имея факторио на компе - невозможно знать наверняка, что значит:

Цитата Сообщение от Olil Посмотреть сообщение
аналог этой конструкции
Поэтому - выражайтесь конкретнее.

Добавлено через 10 минут
3. Ну, факторио я как раз хотел поставить на новый пк, но с моим инетом - это не быстро. Тем временем, если я всё же правильно догадался - получается как то так:
Если передать --version, вместо запуска факторио - запустится консоль и выведет версию игры.

В таком случае - перед запуском процесса надо его настроить, точнее перенаправить его вывод в программу на PABC.Net:
Pascal
1
2
3
4
5
6
7
8
9
10
11
uses System.Diagnostics;
 
begin
  var p := new Process;
  p.StartInfo.FileName := 'factorio.exe'; // остальное путь сами вставьте
  p.StartInfo.UseShellExecute := false; // запрещаем создавать отдельную консоль
  p.StartInfo.RedirectStandardOutput := true;
  p.Start;
  p.WaitForExit;
  var s := p.StandardOutput.ReadToEnd; // это то, что вывело бы в консоль
end.
2
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 32
29.03.2020, 19:47  [ТС]
Это исходный код того, что я хочу переписать:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 @echo off
chcp 1251 >NUL
if not exist "%~dp0/bin/x64/factorio.exe" (
   echo Файла /bin/x64/factorio.exe не найден
   echo Скорее всего вы положили этот файл не в ту папку
   set /p=   
   exit
)
chcp 1251 >NUL
echo Factorio.exe найден
 
"%~dp0/bin/x64/factorio.exe" --version > version.txt
set /p fver=<version.txt
set "ffver=%fver:~9,7%"
set /a cver=%fver:~14,2% 
set /a nver=cver+1
set /a nnver=nver+1
 
chcp 1251 >NUL
echo Текущая версия: %ffver%
 
if not exist "core-win64-0.18.%cver%-0.18.%nver%-update.zip" (
   echo Файла обновления core-win64-0.18.%cver%-0.18.%nver%-update.zip не найдено
   echo Положите его в эту папку, чтобы обновить игру до 0.18.%nver%
   set /p=   
)
if not exist "core-win64-0.18.%cver%-0.18.%nver%-update.zip" ( 
   exit
)
echo core-win64-0.18.%cver%-0.18.%nver%-update найден
 
set /p= Нажмите Ввод, чтобы запустить обновление... (0.18.%cver%-0.18.%nver%)
 
"%~dp0/bin/x64/factorio.exe" --apply-update core-win64-0.18.%cver%-0.18.%nver%-update.zip
На выходе мы получаем файл version.txt, со следующим содержимым:
Version: 0.18.17 (build 50462, win64, alpha)
Binary version: 64
Map input version: 0.16.0-0
Map output version: 0.18.17-0

Ваши варианты решения мне не подошли.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
29.03.2020, 20:41
Ну допустим, это хоть сколько то информации. Но вы снова недоговариваете:
Цитата Сообщение от Olil Посмотреть сообщение
Ваши варианты решения мне не подошли.
Как вы представляете дальнейшие идеи, если вы даже не сказали что именно не подходит? И почему "вариантЫ", во множественном числе?

Ну и насчёт .bat - вы опять говорите "сделайте как там", вместо нормального ТЗ. Конечно, с полным .bat файлом, вместо 1 строчки, понять проще. Но картина всё ещё не полная.
0
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 32
29.03.2020, 20:46  [ТС]
Я просто пытался ещё через Diagnostic.Process что-нибудь придумать. Игра не запускается если ей задать этот аргумент к слову, а просто выводит значения в текстовой файл.

Добавлено через 1 минуту
Использую "второй" вариант игра зависает при загрузке.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
29.03.2020, 20:57
А я говорю даёшь ТЗ!!

И я всё ещё не вижу "вариантЫ". Если второй это мой последний код - где первый? Вы им называете исходный код Exec что ли?
1
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 32
29.03.2020, 21:16  [ТС]
Да, я так называю исходный код Exec. Легче уж использовать батник как прослойку.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
29.03.2020, 21:54
Цитата Сообщение от Olil Посмотреть сообщение
Легче уж использовать батник как прослойку.
И таким образом вы дошли до "ладно не надо", так и не объясним мне что делает батник. Браво.
0
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 32
29.03.2020, 21:57  [ТС]
Этот батник предназначен для обновления игры с пиратки. Эта конструкция отвечает за вывод версии игры в текстовой документ, в дальнейшем это используется для защиты от дурака.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
29.03.2020, 22:05
Тогда что не так с
Цитата Сообщение от Olil Посмотреть сообщение
Игра не запускается
И вообще, "не запускаться" можно большим кол-во разных способов. Это важная деталь.

Про зависание - попробуйте для начала выполнить "factorio.exe --version" из cmd. Может там ждёт чего то типа нажатия Enter, это легко решается.
0
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 32
29.03.2020, 22:07  [ТС]
Она зависает при загрузке.
0
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 32
29.03.2020, 22:11  [ТС]
Через командную строку получилось
Миниатюры
Аналог конструкции "%~dp0/bin/x64/factorio.exe" --version > version.txt на pascalABC.net  
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
29.03.2020, 22:25
Лучший ответ Сообщение было отмечено Olil как решение

Решение

Вообще должно и без "start" в начале работать...

Ну, в любом случае - что если нажать Enter после этого полученного текста?

Добавлено через 7 минут
А, у меня наконец докачалось, и тут я понял что аргумент (--version) я никуда не засунул.
Вы вообще тоже могли бы посмотреть на программу и увидеть что что то не так, раз --version нигде нет.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
uses System.Diagnostics;
 
begin
  var p := new Process;
  p.StartInfo.FileName := 'C:\Program Files\Factorio\bin\x64\Factorio.exe';
  p.StartInfo.Arguments := '--version';
  p.StartInfo.UseShellExecute := false; // запрещаем создавать отдельную консоль
  p.StartInfo.RedirectStandardOutput := true;
  p.Start;
  p.WaitForExit;
  var s := p.StandardOutput.ReadToEnd; // это то, что вывело бы в консоль
  s.Println;
end.
Сделал пока вывод в окно вывода, чисто чтоб видно было что всё работает.
1
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 32
29.03.2020, 22:30  [ТС]
Спасибо, мда, что в консоли занимает одну строку - в паскале десяток)
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
29.03.2020, 22:57
Консоль - это то что есть у многих программ, не путайте её с cmd и .bat .

Ну а короче - потому что короткие программы в скриптах всегда короче. В этом вся суть скриптов.
Зато в скриптах на много сложнее вылавливать ошибки и писать программы на >100 строк. Ну и программы на >100 строк обычно будут длиннее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.03.2020, 22:57
Помогаю со студенческими работами здесь

Какая разница в живом спецификации Multipage Version от Developer Version ?
Какая разница в живом спецификации Multipage Version от Developer Version ? https://html.spec.whatwg.org/multipage/ ...

Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3
ребят почему так пишет Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3 - jQuery? когда у меня...

ORA-00201: control file version 11.2.0.2.0 incompatible with ORACLE version 11.2.0.0.0
Пожалуйста отзовитесь монстры оракла))) помогите кто чем может, я взял базу с сервера и собираюсь развернуть ее на другой машине, поставил...

Командная строка Windows никак не откликается на команды java -version, javac -version
jdk установлен, переменные среды настроены (java_home, добавлен путь в path), пк перезагружен давно не пользовался, раньше откликались, а...

Как понять This version of ChromeDriver only supports Chrome version 78
Собственно вопрос такой, стоит на убунте 14-й google-chrome --version Google Chrome 78.0.3904.70 я просто торчу. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru