Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
4 / 4 / 0
Регистрация: 22.09.2013
Сообщений: 112
1

Запись содержимого TMemo в переменную

27.05.2014, 20:02. Показов 2925. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Подскажите, пожалуйста, как сделать так, чтобы:

Например, есть такой текст:
TMemo line 1
End of text

И этот текст надо перевести так, чтобы получилось:
"TMemo line 1"+#13#10+'End of text"
Этот текст нужно записать в переменную(типа String).

Заранее спасибо!

Добавлено через 11 минут
Думаю, тему можно закрыть.
Я уже сам разобрался.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2014, 20:02
Ответы с готовыми решениями:

Запись содержимого текстового файла в переменную
Здравствуйте, подскажите пожалуйста как мне считать все данные из txt файла в переменную? главное...

Разработать приложение для вывода содержимого компонента класса TMemo на печать с использованием функции Canvas
Разработать приложение для вывода содержимого компонента класса TMemo на печать с использованием...

Разработать приложение для вывода содержимого компонента класса TMemo на печать с использованием функции Canvas
Разработать приложение для вывода содержимого компонента класса TMemo на печать с использованием...

Запись из TMemo в некий буфер
Суть в том, что нужно оптимизировать тулзу, иначе очень сложно отловить последнюю ошибку, да и...

20
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
27.05.2014, 20:02 2
Delphi
1
s := Memo1.Lines.Text;
1
4 / 4 / 0
Регистрация: 22.09.2013
Сообщений: 112
27.05.2014, 20:15  [ТС] 3
Хотя, нет...
Моё решение для моей задачи не подходит.

Добавлено через 59 секунд
Спасибо, FIL!

Добавлено через 26 секунд
Моё решение было сложнее...

Добавлено через 10 минут
Простите, я задал совсем не тот вопрос...

Вот код для создания PDF с помощью компонента Synopse PDF Engine:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var
  lPdf   : TPdfDocument;
begin
  lPdf := TPdfDocument.Create;//создали документ
  try
    lPdf.Info.Author        := 'Tester';//задали автора
    lPdf.Info.CreationDate  := Now;//задали дату создания документа
    lPdf.DefaultPaperSize   := psA4;//указали формат страниц (А4)
    lPDF.AddPage;//добавили страницу в документ
    lPDF.Canvas.SetFont('Helvetica',10.0,[]);//указали параметры шрифта
    {записываем текст в документ}
    lPdf.Canvas.BeginText;
    try
      lPdf.Canvas.TextOut(0, 700,  'Это текст в PDF-документе...');
      lPdf.Canvas.TextOut(0, 686,  'Это текст на другой строке в PDF-документе...');
    finally
      lPdf.Canvas.EndText;
    end;
    //сохраняем полученный файл
    lPdf.SaveToFile('c:\temp\test.pdf');
  finally
    lPdf.Free;
  end;
end;
Как сделать так, чтобы эти строки
Delphi
1
2
 lPdf.Canvas.TextOut(0, 700,  'Это текст в PDF-документе...');
 lPdf.Canvas.TextOut(0, 686,  'Это текст на другой строке в PDF-документе...');
отображали текст Memo(он состоит из нескольких строк)?

Текст должен отображаться в позиции 50, 50.
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
27.05.2014, 20:51 4
Лучший ответ Сообщение было отмечено Мельников Фёдор как решение

Решение

Например, так:
Delphi
1
2
3
4
5
6
var
  i, h: Integer;
begin
  h := Canvas.TextHeight(Memo1.Lines[0]);
  for i := 0 to Memo1.Lines.Count - 1 do
    Canvas.TextOut(50, 50 + i * h,  Memo1.Lines[i]);
1
4 / 4 / 0
Регистрация: 22.09.2013
Сообщений: 112
27.05.2014, 21:06  [ТС] 5
А почему текст выводится вверх?
Первая строка оказывается последней.
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
27.05.2014, 21:09 6
Попробуй плюс на минус поменять.
1
4 / 4 / 0
Регистрация: 22.09.2013
Сообщений: 112
27.05.2014, 21:16  [ТС] 7
Огромное спасибо! Теперь всё работает!
С меня 2 плюса и "лучший ответ".
0
4 / 4 / 0
Регистрация: 22.09.2013
Сообщений: 112
29.05.2014, 12:55  [ТС] 8
Тут ещё "задачка" появилась:
если увеличить размер шрифта, то отступ не увеличивается.
Как можно исправить?
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
29.05.2014, 13:48 9
Цитата Сообщение от Мельников Фёдор Посмотреть сообщение
если увеличить размер шрифта
Где? В Мемо?
0
4 / 4 / 0
Регистрация: 22.09.2013
Сообщений: 112
29.05.2014, 17:09  [ТС] 10
Если, например, код такой:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var
  lPdf   : TPdfDocument;
begin
  lPdf := TPdfDocument.Create;//создали документ
  try
    lPdf.Info.Author        := 'Tester';//задали автора
    lPdf.Info.CreationDate  := Now;//задали дату создания документа
    lPdf.DefaultPaperSize   := psA4;//указали формат страниц (А4)
    lPDF.AddPage;//добавили страницу в документ
    lPDF.Canvas.SetFont('arial',48,[]);//указали параметры шрифта
    {записываем текст в документ}
    lPdf.Canvas.BeginText;
    try
      lPdf.Canvas.TextOut(0, 700,  'Это текст в PDF-документе...');
      lPdf.Canvas.TextOut(0, 686,  'Это текст на другой строке в PDF-документе...');
    finally
      lPdf.Canvas.EndText;
    end;
    //сохраняем полученный файл
    lPdf.SaveToFile('c:\temp\test.pdf');
  finally
    lPdf.Free;
  end;
end;
то в PDF текст наложен друг на друга.
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
29.05.2014, 19:12 11
Цитата Сообщение от Мельников Фёдор Посмотреть сообщение
в PDF текст наложен друг на друга.
Так а где в твоем коде учитывается высота шрифта как сделано в моем примере?
0
4 / 4 / 0
Регистрация: 22.09.2013
Сообщений: 112
29.05.2014, 21:50  [ТС] 12
Цитата Сообщение от FIL Посмотреть сообщение
Так а где в твоем коде учитывается высота шрифта как сделано в моем примере?
Ой, я скопировал стандартный пример....
Сейчас...

Delphi
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
var
  lPdf   : TPdfDocument;
   i, h: Integer;
begin
  lPdf := TPdfDocument.Create;//создали документ
  try
    lPdf.Info.Author        := 'Tester';//задали автора
    lPdf.Info.CreationDate  := Now;//задали дату создания документа
    lPdf.DefaultPaperSize   := psA4;//указали формат страниц (А4)
    lPDF.AddPage;//добавили страницу в документ
    lPDF.Canvas.SetFont('arial',48,[]);//указали параметры шрифта
    {записываем текст в документ}
    lPdf.Canvas.BeginText;
    try
      h := Canvas.TextHeight(Memo1.Lines[0]);
      for i := 0 to Memo1.Lines.Count - 1 do
      Canvas.TextOut(50, 50 - i * h,  Memo1.Lines[i]);
    finally
      lPdf.Canvas.EndText;
    end;
    //сохраняем полученный файл
    lPdf.SaveToFile('c:\temp\test.pdf');
  finally
    lPdf.Free;
  end;
end;
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
29.05.2014, 21:58 13
Я общий пример писал, а тебе нужно работать с Канвасом lPdf:
Delphi
1
2
3
      h := lPdf.Canvas.TextHeight(Memo1.Lines[0]);
      for i := 0 to Memo1.Lines.Count - 1 do
        lPdf.Canvas.TextOut(50, 50 - i * h,  Memo1.Lines[i]);
0
4 / 4 / 0
Регистрация: 22.09.2013
Сообщений: 112
29.05.2014, 22:52  [ТС] 14
Этот код не компилируется...
Delphi
1
lpdf.Canvas.TextHeight(Memo1.Lines[0]);
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
30.05.2014, 00:38 15
Цитата Сообщение от Мельников Фёдор Посмотреть сообщение
Этот код не компилируется.
Какая ошибка?
0
4 / 4 / 0
Регистрация: 22.09.2013
Сообщений: 112
30.05.2014, 11:45  [ТС] 16
Цитата Сообщение от FIL Посмотреть сообщение
Какая ошибка?
Undeclared identifier: 'TextHeight'
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
30.05.2014, 11:53 17
Видимо у lpdf.Canvas нет такого св-ва - надо как-то иначе высоту шрифта определять.
0
4 / 4 / 0
Регистрация: 22.09.2013
Сообщений: 112
30.05.2014, 14:19  [ТС] 18
Цитата Сообщение от FIL Посмотреть сообщение
надо как-то иначе высоту шрифта определять
С помощью lPdf.Canvas определить высоту шрифта не получится...
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
30.05.2014, 15:11 19
Лучший ответ Сообщение было отмечено Мельников Фёдор как решение

Решение

Цитата Сообщение от Мельников Фёдор Посмотреть сообщение
С помощью lPdf.Canvas определить высоту шрифта не получится...
Значит другие способы надо искать (в исходниках все откомментировано):
Delphi
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
procedure TForm1.Button1Click(Sender: TObject);
var
  lPdf: TPdfDocument;
  i: Integer;
begin
  lPdf := TPdfDocument.Create;
  with lPdf, Canvas do
  try
    Info.Author := 'Tester';
    Info.CreationDate := Now;
    DefaultPaperSize := psA4;
    AddPage;
    SetFont('Helvetica', 36.0, []);
    SetLeading(Page.FontSize);
 
    BeginText;
    try
      MoveTextPoint(100, Page.PageHeight);
      for i := 0 to Memo1.Lines.Count - 1 do
      begin
        ShowText(Memo1.Lines[i], True);
//        MoveToNextLine;
      end;
    finally
      EndText;
    end;
 
    SaveToFile('D:\test.pdf');
   finally
     Free;
   end;
end;
1
4 / 4 / 0
Регистрация: 22.09.2013
Сообщений: 112
31.05.2014, 22:47  [ТС] 20
Спасибо!

Добавлено через 4 часа 20 минут
И последний вопрос:
какие значения может иметь DefaultPaperSize?
0
31.05.2014, 22:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2014, 22:47
Помогаю со студенческими работами здесь

Убрать из TMemo запятые, числа расположить в столбик, и вывести все это во второе поле TMemo
Привет всем вообщем помогите с программой ) у нас есть поле TMemo в котором числа расположены числа...

Получение содержимого (html) страницы в переменную
Здравствуйте. Не судите строго, ибо поиском на форуме пользовался и нашел несколько похожих тем, но...

Ввести в строковую переменную запись вещественного числа с фиксированной точкой. Дописать в ту же строковую переменную знак =
Всем пользователям форума добрый вечер! Никак не могу правильно написать код,поэтому нужна ваша...

Сохранение содержимого richedit в переменную вместе с настройками шрифта
Доброго времени суток. Есть программка, работает хорошо, но есть неувязочка. В процессе работы...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru