
Тоже принесли в починку, починил, хуле.
Инструкция, прошивка, софт для рутования, скачать с Mega.nz (7Z-архив, 348 Мб)
Тоже принесли в починку, починил, хуле.
Инструкция, прошивка, софт для рутования, скачать с Mega.nz (7Z-архив, 348 Мб)
Я больше ничего говорить не буду, просто оставлю это здесь.
Деревня укрылась от Майкрософт
Туда совершенно случайно попал
Один покупатель старинных виндов,
Он их для Билл Гейтса повсюду искал,
Не мог он не удивиться
Хозяйке старого ноутбукА,
Красивая с виду девица
Откуда в этой глуши она?
А? А? А?
Висели на дисплее старинные винды,
В них замер system main process сто с лишним лет назад,
Девица не спускала с них свой очень странный взгляд,
Они давно висят!
Но нет, неподкупна хозяйка была,
Винды отказалась она продавать,
И на ночь оставила гостя она
Свою предложила мужчине кровать.
Но только она заснула,
Тихонько дверь притворив за собой
В гостиную прошмыгнула
Фигура гостя во тьме ночной.
Ой, ой, ой
Висели на дисплее старинные винды,
В них замер system main process сто с лишним лет назад,
И гость не отрывал от них свой сисадминский взгляд,
Они давно висят!
Не сразу в винде неисправность нашел,
Лишь только компьютер перезагрузил,
Обратно он в спальню хозяйки пошёл,
Мол, древнюю вещь ото сна пробудил
В ответ она захрипела
Был дикий ужас в её глазах
Винды грузились — она старела,
Пока не превратилась в прах!
Ах, ах, ах!
Висели на дисплее старинные винды,
В них замер system main process сто с лишним лет назад,
Девица не спускала с них свой очень странный взгляд,
Они давно висят!
Кто не знает, что это такое. Если говорить по рабоче-крестьянски, инструкция о том, как расшарить в локальную сеть каталог на компьютере с Linux.
Про протокол SMB/CIFS и пакет Samba можно почитать по ссылкам в Википедии.
Обычно в Slackware сервер Samba доступен «из коробки».
Для запуска Samba в Slackware достаточно дать права на исполнение файлу /etc/rc.d/rc.samba
и дать команду на запуск:
chmod 744 /etc/rc.d/rc.samba
/etc/rc.d/rc.samba start
Остановка:
/etc/rc.d/rc.samba stop
Если не надо, чтоб сервер Samba стартовал при загрузке ОС, отбираем права на исполнение:
chmod 644 /etc/rc.d/rc.samba
Samba прекрасно запускается в сетевом неймспейсе (копия) если это будет надо.
В таком случае, Samba надо будет запускать вручную, после того, как нужный namespace настроен, иначе возможны непонятные глюки. Так что в стартовый скрипт, после настройки неймспейсов вставляем команды:
echo "Starting samba server..."
chmod 744 /etc/rc.d/rc.samba
ip netns exec provns /etc/rc.d/rc.samba start
provns
— меняем на имя нужного неймспейса.
В скрипт, выполняемый при завершении работы (обычно /etc/rc.d/rc.local_shutdown
) вставляем команду завершения работы Samba-сервера:
echo "Stopping samba server..."
/etc/rc.d/rc.samba stop
И отбираем права на исполнение скрипта rc.samba
:
chmod 644 /etc/rc.d/rc.samba
Производим основные настройки в файле /etc/samba/smb.conf
[global] workgroup = WORKGROUP netbios name = PXE server string = Local PXE interfaces = 10.10.0.120 map to guest = bad user security = USER unix extensions = no wide links = yes follow symlinks = yes log file = /var/log/samba/log.%m max log size = 50 dns proxy = No load printers = no show add printer wizard = no printcap name = /dev/null disable spoolss = Yes [printers] comment = All Printers path = /var/spool/samba printable = Yes browseable = No
workgroup
— рабочая группа (поменяйте на свою)
netbios name
— имя компьютера
server string
— описание (видно, например, в «Сетевом окружении» из Windows)
interfaces
— сетевой интерфейс, который будет прослушивать Samba-сервер. Можно выставить имена сетевых устройств (например, eth0
) или задать IP
Делаем доступ к каталогам, открытым в Samba анонимным (без логина и пароля):
map to guest = bad user
security = USER
Следующие 3 строки нужны, чтоб Samba стал поддерживать символические ссылки. Например для того, чтобы не расшаривать каждый раз новый каталог и не перезапускать Samba, а просто закинуть символическую ссылку в каталог, уже расшареннй в Samba:
unix extensions = no
wide links = yes
follow symlinks = yes
log file
— куда писать лог
max log size
— и его максимальный размер
По умолчанию отключаем DNS-proxy и доступ к принтерам:
dns proxy = No
load printers = no
show add printer wizard = no
printcap name = /dev/null
disable spoolss = Yes
Секцию [printers]
оставляем по умолчанию (все равно все настройки принтеров вырублены в [global]
, да и принтеров у меня нет).
Иногда полезно создать каталог, чье содержимое доступно в локальной сети только для чтения, например, чтобы пользователь случайно или намеренно не испортил файлы. Пример такой шары из конфига для PXE-сервера. В шаре расположены файлы для Hiren’s Boot CD, запускаемого через PXE (копия)
Права на файлы, расшаренный каталог и подкаталоги должны быть установлены в 644
(чтение и запись для владельца, чтение для группы, чтение для остальных).
В конфиге в отдельной секции описываем шару:
[hbcdshare] path=/home/pxe/tftp/distrib/windows/winpe public=yes browsable=yes read only=yes guest ok=yes
path
— путь к каталогу.
public
— публичный, ставим в yes
, т.к. каталог нужно открыть для любого пользователя в локальной сети.
browsable=yes
— отображение без прямого указания адреса, без этого параметра автоматически не найдется в «Сетевом окружении», например.
read only=yes
— только чтение.
guest ok=yes
— пускать любого пользователя.
Примечание: Можно расшарить хоть целый раздел.
Права на расшариваемый каталог, подкаталоги и файлы надо установить в 777
(читать, исполнять и записывать для всех)
Секция в конфиге:
[pomojka] path=/mnt/sdb2 public=yes browsable=yes read only=no guest ok=yes
В секции меняется только параметр read only=no
Пример отображения в «Сетевом окружении» Windows:
Children of ГОРФ.
(Из классификатора «Эсхатологические мутанты»)
Пионерский вариант:
Children of Gorn.
Ох, опора подгнила,
И бригаду не прислали!
Нас осталось только два.
Нас с зарплатой наебали!
Провод меж опор провис,
И с защитою напряжно!
Но мы держим эту сеть,
Мы сражаемся отважно!
Транс взаорвался, все пиздец,
Больше негде запитаться!
Эх, нажремся, брат-боец,
И попремся увольняться!
Будем водкой торговать,
У меня магаз у мамi,
А начальнику с женой
Светит #сказочноебали!
Работники лесного хозяйства, задействованные на посадке деревьев, сообщают о случае наблюдения неопознанного летающего объекта неподалеку от их места работы.
Объект треугольной формы наблюдался в районе оз. Ведлозера (д. Палалахта), республика Карелия, Пряжинский район, в июне 2023 г. Объект наблюдался в вечернее и ночное время на протяжении трех дней, со слов очевидца, с 8 по 11 июня.
Примерное место нахождения объекта, восстановленное по опросу очевидца (изображение с Google.Maps):
Опрашиваемый очевидец сделал рисунок с пояснениями:
Объект представлял из себя высоко висящий треугольник, по краям окоямленный яркими шарообразными огнями желтого цвета. К объекту периодически подлетали и отлетали от него более мелкие и менее яркие точечные объекты, которые также отображены на схеме очевидца.
Основной объект не перемещался, и во все дни наблюдения находился примерно на одном и том же месте.
Очевидцами, кроме опрошенного субъекта, являлись еще 4 работника лесного хозяйства.
Примечание о районе оз. Ведлозера: Район оз. Ведлозера считается в республике Карелия аномальной зоной, например, явление, известное как «Водяной из Ведлозера» попало в известную книгу Николая Непомнящего «Энциклопедия непознанного».
Ссылка на отрывок книги Копия отрывка в PDF
Также, по сообщениям местных жителей, возле оз. Ведлозеро наблюдались и иные аномальные явления.
Коллега из нашей группы предложила рациональное объяснение, заключающееся в том, что это был метеорологический стационарный зонд-аэростат, снабженный светодиодной подсветкой, а размер и расстояние до объекта были неверно оценены наблюдателями. Однако, данная гипотеза не объясняет более мелких объектов, подлетающих и улетающих от и к основному.
Отчет составлен 29.07.2023 г., информационным координатором группы «Дельта», г. Петрозаводск, р. Карелия. Опрос свидетеля НВЯ/НЛО произведен лично.
Понадобилось, нашел вот. Пост от склероза и для бэкапа.
Задача, которую мне поставил клиент, была такая — преобразовать бинарный файл в текст, который можно распечатать и переслать по почте. Чтоб его можно было сканером распознать, и обратно в бинарный файл преобразовать. Ну очень плохо ходят флэшки, и тем более, криптостойкие донглы промеж границ из-за Хуйла, сами понимаете.
Пример тестового бинарного файла (в Linux):
В Windows:
Понятно, что напечатать это нельзя, для распечатки надо преобразовать бинарный RAW-формат в что-то удобопечатоемое, например в строки, содержащие шестнадцатеричные цифры:
EA 38 B6 C1 18 1A 4F B3 5F 81 B7 A4 1B 50 89 18 B3 0B 24 27 36 59 57 D0 3A 78 1C 3E D6 F2 27 01 13 4B 54 65 6E 44 61 23 7D D4 ED 60 CE 8E C1 A2 58 45 BB 35 84 A7 69 28 D4 09 5F 99 F5 27 CA 30
В Linux есть сразу несколько инструментов, позволяющих выполнить дамп файла в набор шестнадцатеричных значений, причем «из коробки». Не зря же эта ОС изначально писалась программистами для программистов.
Кратко ознакомиться с этими инструментами можно здесь:
Convert Binary Data to Hexadecimal (оригинал статьи на буржуйском)
Преобразование двоичных данных в шестнадцатеричный формат (Перевод на русский, PDF)
Я воспользовался утилитой hexdump
, и написал небольшой скрипт, который при вызове его с параметром, содержащим путь к файлу, создает в каталоге с оригинальным файлом файл имя_оригинального_файла.dump
, который содержит шестнадцатеричное представление исходного файла:
dumpfile <имя_файла>
Основной алгоритм укладывается в одну строку:
cat $1|hexdump -e '27/1 "%02X " "\n"' >$1.dump
1. Читаем файл, переданный на вход скрипта командой cat
.
2. Передаем в pipe (|
) данные hexdump
‘у
3. Скидываем вывод (>
) в файл $1.dump
В винде, как обычно — в таких случаях все через жопу, слава Ктулху, нашлись умные люди, которые все сделали за меня на BAT/CMD и доступном в системе JScript.
Совместимость — начиная с Windows XP
HEXDUMP [/Опция [Значение]]...
Записывает содержимое стандартного ввода в шестнадцатеричном виде в стандартный вывод, по 16 байт на строку, используя следующий формат:
ООООООО ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ ХХ ААААААААААААААААА
где:
0000000
= шестнадцатеричное смещение в пределах файла
XX
= шестнадцатеричное значение байта
AAAAAAAAAAAAAAAA
= байты в формате ASCII (управляющие коды и не-ASCII в виде .
[символ точка])
Вывод кодируется как ASCII, каждая строка завершается символом CarriageReturn — перевод строки.
Поведение можно изменить, добавив любую комбинацию следующих параметров:
— /I InFile
— ввод из InFile
вместо стандартного ввода
— /O OutFile
— вывод в OutFile
вместо stdout: — перезаписывает InFile
— /NA
— отключить вывод ASCII-символов.
— /NO
— отключить вывод смещений
— /R
— Необработанный шестнадцатеричный код в одной строке без пробелов между байтами.
— /LF
— LineFeed как признак конца строки (UNIX-формат) вместо CarriageReturn LineFeed (по умолчанию, формат Windows)
— /NL
— без разделителей строк, весь вывод в одной строке без разделителей строк
— /U
— вывод в кодировке Unicode с BOM (UTF-16)
— /V
— Вывести информацию о версии
— /?
— Вывести эту справку
HEXDUMP.BAT
версии 2.1
был написан Дэйвом Бенхамом.
и поддерживается на https://www.dostips.com/forum/viewtopic.php?f=3&t=8816
Вывод в файл (пример):
hex_dump.bat /I test.temp /O test.temp.dump /NA /NO
Вывод на консоль:
hex_dump.bat /I test.temp /NA /NO
Пример вывода на консоль:
60 ab 2b b8 4a 3f 0d 91 a0 a4 09 f0 8f 4b 51 95 3a 22 1b 0e 5b 6d d0 3f 80 96 c5 22 98 dc 4a 2b 89 38 52 96 42 c0 ab 04 c4 8e b8 87 dd 7c 4a b2 e1 6a b1 c2 30 66 82 54 21 5a 40 a2 bb f8 19 89
Внезапно, есть.
Это команда type
.
Использование:
type <путь_и_имя_файла>
Формат командной строки:
TYPE [диск:][путь]имя_файла
Примеры: type /?
— отобразить подсказку по использованию.
type mytextfile.txt
— вывести на экран содержимое текстового файла mytextfile.txt
текущего каталога.
type mytextfile.txt | more
— вывести на экран содержимое текстового файла mytextfile.txt
в постраничном режиме.
type mytextfile.txt > D:\newfile.txt
— перенаправление вывода команды type
в файл, т.е. копирование текстового файла mytextfile.txt
в текстовый файл D:\newfile.txt
.
type bigfile.iso > nul
— вывод файла на фиктивное устройство nul
, что эквивалентно просто чтению заданного файла.
При выводе на экран нетекстовых файлов, байты, содержимое которых представлено неотображаемой частью таблицы ASCII (0x00 – 0x1F
) интерпретируется как служебные символы, что выражается в непредсказуемом перемещении курсора, выводе звука, очистке окна и т.п.
Совместимость: DOS 6.x и выше.
Понадобилось в одном из офисов массово обновить винды.
1. Теперь пакет с сайта не скачать с российских IP.
2. Не установится, если обнаружит российский IP при запуске, надо физически отключать интернеты, выдернув сетевой кабель из компа.
Понятно, в связи с чем.
На форумах (дурацких) люди (дурацкие) говорят, что последний пакет обновлений грохает русскую винду, даже если предыдущие и следующие условия соблюдены. Все работает, проблем не возникло, проверено 15 раз.
Как ответить на вопросы правильно, думаю, догадаетесь сами.
И да, минутку надо подождать, после появления второго окна (на совсем медленных ведрах лучше две).
Скачать обновление (последняя версия)
Последняя довоенная версия (копия), если кому надо для успокоения души. Ключик спрашивать лично в Телеграме, вате не дам.
TCPLAY: шифрование несистемного раздела. (копия)
7. Отмонтирование и отключение раздела (поместить в скрипт /etc/rc.d/rc.local_shutdown
):
umount /mnt/sdb2c
tcplay --unmap=sdb2c
rmdir /mnt/sdb2c
7. Отмонтирование и отключение раздела (поместить в скрипт /etc/rc.d/rc.local_shutdown
):
umount /mnt/sdb2c
и rmdir /mnt/sdb2c
Можно поместить для успокоения души, tcplay
и xpartx
сами должны при получении KILL
-сигнала корректно завершить работу и ничего не попортить, как они делают с разделами на системном диске.
Пост Леонида Каганова напомнил историю.
Во-первых, расскажу, как найти ее правильно, а во-вторых, вспомню, как несколько лет назад, со мной и друзьями случился «эффект Манделы» ИРЛ.
Чтобы найти Полярную звезду, надо сначала найти характерную конфигурацию из семи ярких звёзд — созвездие Большой Медведицы, напоминающее ковш (астеризм Большой Ковш), затем через две звезды (Дубхе и Мерак) «стенки» ковша, противоположной «ручке», мысленно провести линию, на которой отложить пять раз расстояние между этими крайними звёздами. Примерно в конце этой линии находится Полярная звезда. Направление на Полярную звезду совпадает с направлением на север, а её высота над горизонтом совпадает с широтой наблюдателя.
В Википедии есть правильная инструкция
Сидим с друзьями, Тема спрашивает, помню ли я, как найти полярную звезду. Вообще, это такой школьный вопрос по астрономии, который мы обычно задаем новым членам нашего общества, типа такой вопрос на профпригодность.
— Конечно, ищешь Большую Медведицу (ковш), потом направляешь взгляд вверх, там будет Малая Медведица, от хвоста Большой Медведицы (от последней звезды в хвосте Большой) проводишь линию, получается, третья звезда в ковше Малой, если считать сверху и слева направо, это она и есть.
Скай и Санек это дело подтверждают. А они наблюдатели гораздо лучше меня, у них вся карта северного полушария в голове.
— А теперь, парни, загуглите-ка вики! Звезда-то Полярная в хвосте ковша Малой Медведицы.
Оказывается, все так, в хвосте, и схема есть в Википедии, как ее найти. И по бумажной карте, которая висит в нашем «офисе» я сверился, да, Полярная — последняя звезда в «ручке» ковша Малой Медведицы.
Причем, Тема помнит оба варианта, а мы только неправильный. Во всяком случае, неправильный в этой вселенной.
Вот ще це було? Были ж абсолютно трезвые и без веществ, а с ума поодиночке сходят, вместе только гриппом болеют.
До сих пор тот случай иногда вспоминаем.
Архивное фото нашивочки другана.
Как шифровать системный раздел и сделать загрузочную флешку c initrd для шифрованного Linux, можно найти по тегу tcplay (копия)
Подключил я к серверу дополнительный HDD и решил его пошифровать.
Внимание! Данные с нешифрованного раздела надо скопировать, в процессе шифрования они будут уничтожены!
1. Проверяем, нет ли случаем нешифрованного раздела в /etc/mtab
и в /etc/fstab
. Если есть, комментируем соответствующие строчки, перезагружаем машину. Пример:
fstab
:
... #/dev/sdb2 /mnt/sdb2 ext2 defaults 0 0 ...
mtab
:
... #/dev/sdb2 /mnt/sdb2 ext2 rw 0 0 ...
2. Генерируем ключ, можно воспользоваться /dev/urandom
(да, это безопасно, уже обсуждалось):
dd if=/dev/urandom of=sdb2key bs=1 count=1048576
Вывод:
1048576+0 records in
1048576+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 2.34336 s, 447 kB/s
3. Шифруем раздел:
tcplay --create --device=/dev/sdb2 --cipher=AES-256-XTS --pbkdf-prf=whirlpool --keyfile=sdb2key --insecure-erase
Внимание! Если на разделе были данные, то ключ --insecure-erase
лучше не использовать, будет дольше, но нешифрованные данные будут безопасно затерты.
Внимание! Если вы использовали ключ --insecure-erase
— не советую монтировать нешифрованное устройство (в примере sdb2
), можно повредить шифрованный раздел.
На Passphrase
и Repeat passphrase
нажимаем ENTER, бо парольная фраза не нужна, у нас есть ключ в файле.
Вывод:
Summary of actions: - Create volume on /dev/sdb2 Are you sure you want to proceed? (y/n) y Creating volume headers... Depending on your system, this process may take a few minutes as it uses true random data which might take a while to refill Writing volume headers to disk... All done!
Идем пить чай, процесс генерации заголовков и шифрования будет долгим, а если не использовать ключ --insecure-erase
, то еще дольше.
5. Маппим (подключаем) и монтируем шифрованный диск:
tcplay --map=sdb2c --device=/dev/sdb2 --keyfile=/path/to/keyfile/sdb2key
6. Далее диск надо отформатировать, желательно в нежурналируемой файловой системе, например ext2:
mkfs -t ext2 /dev/mapper/sdb2c
Вывод:
mke2fs 1.43.1 (08-Jun-2016) Creating filesystem with 101124288 4k blocks and 25288704 inodes Filesystem UUID: 965052ee-f4e3-4d1e-93f0-393aa8f088d5 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968 Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done
Продолжаем монтирование:
mkdir -p /mnt/sdb2c
mount -t ext2 /dev/mapper/sdb2c /mnt/sdb2c
Эти же строки надо включить в стартовый скрипт (/etc/rc.d/rc.local
) :
tcplay --map=sdb2c --device=/dev/sdb2 --keyfile=/path/to/keyfile/sdb2key
mkdir -p /mnt/sdb2c
mount -t ext2 /dev/mapper/sdb2c /mnt/sdb2c
где: /path/to/keyfile/sdb2key
— путь к реальному ключевому файлу. Файл(-ы) от других разделов вполне можно хранить на системном разделе, если тот зашифрован.
7. Отмонтирование и отключение раздела (поместить в скрипт /etc/rc.d/rc.local_shutdown
):
umount /mnt/sdb2c
и rmdir /mnt/sdb2c
Можно поместить для успокоения души, tcplay
и xpartx
сами должны при получении KILL
-сигнала корректно завершить работу и ничего не попортить, как они делают с разделами на системном диске
ФАНФАРЫ!
Внимание! Так делать не рекомендуется всеми официальными источниками, но если очень надо, то можно. Используйте на свой страх, риск и хвост!
Если, при клонировании репозитория (git clone https://example.org/project.git
) случилось следующее:
Cloning into 'project '...
fatal: unable to access ' https://example.org/project.git ': SSL certificate problem: certificate has expired
То сертификат, либо сайта, либо один из корневых в вашей системе просрочен.
Примечание: Интернет-адреса условные для примера.
git config --global http.sslVerify "false"
Выполнять надо от root
.
После этого git не будет проверять валидность сертификатов из любых источников.
git config --global http.sslVerify "true"
Т.е. если такой баг только на каком-то одном сайте, то можно выключить, скачать и снова включить. Но помните, это глобальный параметр. Не включите обратно, так и будет игнорировать сертификаты.
Пост для бэкапа, вдруг если что искать потом буду.
Скачать (исходники и готовый пакет для Slackware) version 3.42.0 с Mega.nz
Архиерейдер
(Из классификатора «Эсхатологические мутанты»)
На самом деле, оказалось довольно простой задачей.
var P1,P2,P3,P4:String; I:Integer; begin P1:='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; P2:='ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; P3:='abcdefghijklmnopqrstuvwxyz0123456789'; P4:='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; for I:=1 to 23 do begin WriteLn(GenerateString(75,P1)); end; WriteLn('Press ENTER'); ReadLn(); end.
Пока все совсем просто, создаем 4 паттерна (алфавита) для теста, заполняем паттерны, создаем счетчик для цикла, а в цикле вызываем функцию GenerateString
, таким образом генерируем 23 строки.
1. Функция GenerateString
принимает 2 параметра — длина генерируемой строки и паттерн/алфавит, возвращает строку:
function GenerateString (len:Integer; Pattern:String): String;
2. Заводим две внутренних переменных, счетчик для текущей позиции символа в генерируемой строке, и переменную для хранения случайного символа, который получим из строки Pattern
:
var I:Integer; C:Char;
3. Инициализируем значение переменной Result
, которую функция автоматически возвратит в качестве результата функции:
Result:='';
Если этого не сделать, то при попытке заранее выделить память под переменную, компилятор выдаст предупреждение:
Hint: Function result variable of a managed type does not seem to be initialized
(Подсказка: Переменная результата функции управляемого типа, похоже, не инициализирована).
4. И счетчик для текущего символа:
I:=0;
5. Выделяем память под будущую строку, если этого не сделать, память будет выделяться динамически, что будет тормозить процесс:
SetLength(Result,len);
6. Запускаем цикл:
while I < len do begin //... end;
В цикле:
1. Получаем случайный символ.
2. Записываем полученный символ в нужное место результирующей строки.
3. Увеличиваем счетчик цикла.
В Pascal это очень просто, строка рассматривается как массив, а символы — элементы массива. Нумерация символов в строке начинается с единицы, т.е. если мы хотим в переменную C
(типа char
) записать третий символ из строки Pattern
, то это делается так:
C:=Pattern[3];
Для этого применяется функция RandomRange
из модуля Math
со следующим синтаксисом:
RandomRange(начальное_значение, конечное_значение);
т.е. если вызвать функцию таким образом:
I:= RandomRange(1,10);
то в переменной I
(целого типа) окажется случайное значение от 1
до 10
.
Внимание! Не забудьте в начале программы подключить модуль Math
!
Uses Math;
Ну а длина строки, это совсем просто: Length(Pattern)
.
Итого:
1. Получение случайного символа:
C:=Pattern[RandomRange(1, Length(Pattern))];
2. Запись символа в результирующую строку:
Result[I+1]:=C;
3. Увеличение счетчика:
inc(I);
function GenerateString (len:Integer; Pattern:String): String; var I:Integer; C:Char; begin Result:=''; I:=0; SetLength(Result,len); while I < len do begin C:=Pattern[RandomRange(1, Length(Pattern))]; Result[I+1]:=C; inc(I); end; end;
Политическое:
Мох не выдаст — свинья на съезд!
Мох не выдаст — свинья не съезд!
Гаишное:
Мох не выезд — свинья не съезд!
Мох на выезд — свинья на съезд!
Мох на выезд — свинья на въезд!
Бох на выезд — свинья на въезд!
Мох не выест — свинья не съест!
Бог не выест — свинья не съест!
И лишь последним вариантом стало точно найденное: «Бог не выдаст — свинья не съест!»