Войти

Показать полную графическую версию : Можно ли скопировать текст из буфера обмена средством Delphi


turbolover
10-01-2019, 12:38
Можно ли скопировать текст из буфера обмена и вставить его в текстовый файл на компьютере и сохранить, на пример на рабочем столе, или записать текст в заранее созданный текстовый файл 'Test.txt".
Вот нашел вариант как вставить текст в буфер обмена- а как скопировать не нашел.
Если можно помогите с кодом.
Clipboard.SetTextBuf(PChar('Text in Clipboard'));

Iska
10-01-2019, 13:03
а как скопировать не нашол. »
Первые же ссылки из выдачи Google:
Работа с буфером обмена в Delphi | Разные статьи | Статьи | Программирование Realcoding.Net - Программирование C++, Delphi, C#, .NET, базы данных, статьи, электронные книги скачать (http://www.realcoding.net/articles/rabota-s-buferom-obmena-v-delphi.html)
Работа с буфером обмена | Блог Delphi-программиста (http://devdelphi.ru/?p=278)
Работа с буфером обмена -> Форум на Исходниках.Ру (https://forum.sources.ru/index.php?showtopic=93641)

вставить его в текстовый файл на компьютере и сохранить »
Это называется «Append» — дополнить, дописать в конец.

на пример на рабочем столе, »
Получаете путь к Рабочему столу текущего пользователя.

или записать текст в заранее созданный текстовый файл 'Test.txt". »
Без разницы. Если такого файла на Рабочем столе нет — создаёте его и пишете в него. Если уже есть — открываете и дописываете.

ufooo000
10-01-2019, 13:19
https://www.youtube.com/watch?v=jBDLmnNjdh8

opel431
11-01-2019, 02:00
Звучит как "посолить соль".
Что служит источником данных для копирования в буфер, - откуда вы заполняете его, не с потолка же?
Буфер можно сохранить в файл, предварительно проверив формат хранящихся в нем данных, - if ClipBoard.HasFormat(CF_TEXT) then ....
можно скинуть в TStringList или TMemo и сохранить встроенными функциями, - SaveToFile(...).
Для сохранения на рабочий стол необходимо применить функцию определения пути к специальным папкам

uses ShlObj;
....
function GetSpecialPath(CSIDL: word): string;
var s: string;
begin
SetLength(s, MAX_PATH);
if not SHGetSpecialFolderPath(0, PChar(s), CSIDL, true)
then s := '';
result := PChar(s);
end;
....

var
PathDesktop: string;

PathDesktop := GetSpecialPath(CSIDL_DESKTOP);

Больше вопросов, чем ответов!

ufooo000
12-01-2019, 20:15
Я неаример копирую батником

turbolover
12-01-2019, 20:21
откуда вы заполняете его, не с потолка же »
Сылкой из "Youtube"

opel431
13-01-2019, 09:13
Сылкой из "Youtube" »
Ну и что дальше? Ссылка, это просто строка, вида - https://youtu.be/nWCUTxz5wFw
Можете сохранить "буфер" в строковую переменную, предварительно проверив формат данных (см. выше), или вставить в визуальный компонент TEdit, если несколько ссылок одновременно, добавляем в TStringList или визуальный компонент TMemo, - вариантов море. Далее, делайте, что хотите. Строка есть, путь к папке рабочего стола, есть, - получили ссылку, проверили формат, присвоили "переменной", сохранили данные в файл. Добавление удаление и т.д. ссылок из файла, можно потом производить стандартными процедурами и функциями TFile или TStringList.

turbolover
04-02-2019, 13:52
Пока нашел такой вариант который показывает что за текст в буфере обмена.
А как этот текст скопировать в скажем файл "Test.txt" незнаю...
if ClipBoard.FormatCount=4 then
ShowMessage(ClipBoard.AsText);

opel431
05-02-2019, 11:00
Пока нашел такой вариант который показывает что за текст в буфере обмена.
А как этот текст скопировать в скажем файл "Test.txt" незнаю... »Вы справку, по Delphi, хоть один раз открывали! Извините, но одного желания, с такими познаниями, мало. Нет справки, так задайте правильный поиск в сети, - "Delphi операции со строками", или "Delphi работа с файлами". Одно дело, просить помощи в решении более менее сложной проблемы или оптимизации своего кода, другое дело, вести "начальные уроки информатики".

turbolover
05-02-2019, 17:11
Вы справку, по Delphi, хоть один раз открывали! »
Естественно.
Могу скопировать с файла в "Clipboard" а с "Clipboard" в файл неумею.
assignFile(F, 'Test.txt');
Reset(F);
n := 1;
while not eof(f) do
begin
readln(f, s[n]);
inc(n);
end;
Clipboard.Clear;
for i := 1 to n - 1 do
Clipboard.AsText:=Clipboard.AsText+s[i]+' ';

Iska
05-02-2019, 17:25
Вы справку, по Delphi, хоть один раз открывали! Извините, но одного желания, с такими познаниями, мало. Нет справки, так задайте правильный поиск в сети, - "Delphi операции со строками", или "Delphi работа с файлами". Одно дело, просить помощи в решении более менее сложной проблемы или оптимизации своего кода, другое дело, вести "начальные уроки информатики". »
opel431, ну, если спустя месяц после того, как я привёл во втором сообщении готовые ссылки, человек пишет:
Пока нашел такой вариант который показывает что за текст в буфере обмена. »
— ответ, надо полагать, очевиден.

opel431
05-02-2019, 20:59
Могу скопировать с файла в "Clipboard" а с "Clipboard" в файл неумею »
Вам уже неоднократно ответили, что то, что у вас в буфере, это строка - string!
ShowMessage(ClipBoard.AsText); »
ClipBoard.AsText, - это и есть string.
Как сохранить в файл? Тоже ответили, смотрите в справке и примените что-то одно:
1. TFile
2. TStringList
3. TFileStream

или, в современных версиях Delphi 2010 и выше TFile.WriteAllText. http://www.proghouse.ru/programming/126-ioutils#TFile_Create
Простой пример.

uses
SysUtils, IOUtils; // добавим необходимые юниты
...

var
s: string;
begin
TFile.WriteAllText('C:\Test1\Test.txt', ClipBoard.AsText, TEncoding.ANSI); // пишем в кодировке ANSI
s := TFile.ReadAllText('C:\Test1\test.txt')); // читаем
ShowMessage(s): // выводим в сообщение
end;

opel431
05-02-2019, 21:37
ну, если спустя месяц после того, как я привёл во втором сообщении готовые ссылки »
Да желание сделать "своими руками" приветствуется. При нынешней информатизации и доступности получения первоначального уровня, из справки или сети, не должно вызывать проблем, но человек застрял исключительно на "хочу" и не хочет, извиняюсь, включать мозги. Но, разжевать нужно, хотя бы потому, что неизвестен ни возраст, ни серьезность намерений. С уровнем знаний и выработкой алгоритма решения задачи, пока все плохо.

turbolover
06-02-2019, 00:48
"хочу" и не хочет, извиняюсь, включать мозги »
я не программист - я просто немного увлекаюсь этим когда есть время и что то пришло в голову.
Где я пропал на месяц - ездил на фуре по эвропе и щас опять уеду на две недели.

А мне пока нет времени учится- вот сменю профессию и тогда...

Busla
06-02-2019, 10:49
turbolover, я тоже когда-то совершал аналогичную ошибку - пытался сразу решить простую практическую задачу вместо явно учебных примеров. Так вот - это не работает.
Пройдите последовательно пару учебных курсов. А потом уже пробуйте свои силы в произвольных задачах.

Iska
06-02-2019, 13:34
Лучше пару-тройку вменяемых учебников.

Busla
06-02-2019, 15:13
Iska, учебник - это курс напечатанный на бумаге :-)

Iska
06-02-2019, 19:17
Busla, я бы выразился иначе: курсы — слабая пародия на левую руку :) качественный учебник. Курсы хороши в нескольких случаях — когда нужно быстро ознакомиться с технологией, когда нужно пройти переквалификацию/ознакомиться с новыми возможностями уже известной технологии, или когда тебя слабо интересует конечный результат.

Хороших курсов реально мало. И если учебник достаточно минут пять-десять полистать, чтобы понять, годный он, або нет, то с курсами такая песня как правило не проходит — их приходится глядеть/читать от и до, дабы составить правильное представление.

Busla
06-02-2019, 22:30
Iska, вы сейчас как студент из байки про "какого цвета учебник". Возьмите качественный учебник (для взрослого человека), и на обложке будет написано:
Курс экономической теории.
Курс общей физики.
Начальный курс французского языка.
Курс математического анализа.
Поэтому для меня "учебник" и "курс" - практически синонимы

Iska
07-02-2019, 19:29
Iska, вы сейчас как студент из байки про "какого цвета учебник". »
«Во валит, гад, во валит!»™ :lol:

Busla, я не про те курсы. К старому пониманию понятия «курс» у меня никаких претензий нет и быть не может. И, увы, боюсь, перечисленное Вами начисто угроблено усилиями наших доблестных реформаторов от образования. «ОКи-ПоКи наше фсё». Елена Сергеевна Вентцель им, видите ли, устарела.




© OSzone.net 2001-2012