Turbo Pascal для Windows: скопировать вывод в буфер обмена?
Я заканчиваю программу в Turbo Pascal 7 для Windows как часть школьного проекта по программированию, по сути, нам дали краткое задание и сказали самим начинать, внедрять и кодировать программу.
Краткое описание предусматривает создание программы, в которой пользователь может ввести сообщение, выбрать сдвиг букв, и тогда каждая буква будет "зашифрована" в соответствии с этим сдвигом (по существу, ROT13). Легко.
Я запущен в окне терминала Turbo Pascal для Windows 7, и он выводит зашифрованный текст:
writeln('Encrypted message is ', line ,' for a shift of ', shift);
readln;
То, что я хотел бы сделать, это выйти за рамки этого, сделав еще один шаг вперед и позволить пользователю скопировать вывод (var: line) в свой буфер обмена Windows. Я искал повсюду в интернете уже два дня и пока не нашел ничего, что могло бы мне помочь. Теперь я начинаю задумываться, а есть ли у Паскаля такая возможность?
Ура, Люк.
3 ответа
Теперь я начинаю задумываться, а есть ли у Паскаля такая возможность?
Да, если вы не используете этот устаревший 20-летний продукт Pascal. Я не уверен, может ли он получить доступ к буферу обмена (так как буфер обмена Windows является 32-битным API) или нет, но большой шанс, что он не сможет, по крайней мере, не без взлома. Используйте Free Pascal или Delphi и получите доступ к Windows API напрямую, чтобы поиграть с буфером обмена (поищите в MSDN).
PS: буфер обмена не имеет ничего общего с языком Pascal. Это просто концепция, которая есть у ОС, и она позволяет программам использовать ее.
Во-первых, является ли полученный бинарный файл DOS или win3.x EXE?
Если DOS Afaik, есть способы добраться до буфера обмена из дос через расширения INT 2F.
Поиск в огромном архиве SWAG, который содержит кучу примеров для Turbo Pascal (и -Для Windows)
Если win3x то
http://www.programmersheaven.com/mb/pasprog/420895/420895/use-of-windows-clipboard/
Если этот ответ звучит очень расплывчато, то это потому, что все это 20 лет назад:-)
Если бы вы использовали Delphi, вы могли бы использовать Clipboard.SetTextBuf(PChar(somestring)); Вот как я это делаю в своей утилите Dos2Clip, которую я, по-видимому, сделал бесплатной еще в 2005 году. Я сделал источник доступным по ссылке ниже, все 25 строк.;)
В Vista и выше есть команда "clip", доступная в пакетных файлах или командной строке.
пример: эхо "привет, мир!" | клип
Смотрите мою рецензию здесь, где есть ссылка для загрузки моей программы Dos2Clip (с исходным кодом). Я вижу, что Clip2Dos тоже там.
http://www.clipboardextender.com/general-clipboard-use/command-window-output-to-clipboard-in-vista