Трусов Андрей Сергеевич: другие произведения.

1.Студенческое

Журнал "Самиздат": [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь]
Peклaмa:
Конкурс "Мир боевых искусств. Wuxia" Переводы на Amazon!
Конкурсы романов на Author.Today
Конкурс Наследница на ПродаМан

Устали от серых будней?
[Создай аудиокнигу за 15 минут]
Диктор озвучит книги за 42 рубля
Peклaмa
Оценка: 4.09*16  Ваша оценка:
  • Аннотация:
    студент не может сдать зачет: нужно написать программу, которая печатает календарь на год.

  [Дмитрий]
  Здараствуйте, Андрей Сергеевич вы не подскажите как текст из поля Memo в делфи перенести в поле Image?
  
  
  [Я]
  http://www.sql.ru/forum/actualthread.aspx?tid=826471
  это как в картинку текст вывести
  только текст надо брать из memo а не готовый выводить
  
  [Дмитрий]
  дак он у меня выводит только первую строчку из memo и все
  
  [Я]
  ну т.е. Memo1.Text подставить
  Text должен вроде все строки возвращать
  которые в Linеs лежат
  но могу врать - не помню уже
  
  [Дмитрий]
  вы сможете посмотреть мои код ?
  
  [Я]
  тогда просто циклом по строкам пробежаться и в одну строку собрать
  у меня делфи даже не установлен )
  
  [Дмитрий]
  блин
  
  procedure TForm1.Button1Click(Sender: TObject);
  var
  a,i:string;
  begin
  memo1.Clear;
  Y:=StrToInt(EditY.Text);
  D:=StrToInt(EditD.Text);
  M:=StrToInt(EditM.Text);
  for NumStr:=1 to 25 do
  Memo1.Lines.Add(StrOfKalendar(Y,NumStr));
  Memo1.Lines.Add(''); Memo1.Lines.Add('');
  a:=Memo1.Lines.Strings[Memo1.Lines.Add(StrOfKalendar(Y,NumStr))];
  for i:=1 to 25 do
  Image1.Canvas.TextOut(0,0,a);
  Image1.Canvas.TextHeight(i,0,a);
  
  end;
  
  вот у меня такои код написал на кнопку запуска
  и он у меня выводит только одну строчку из memo
  
  [Я]
  логично
  почему вот эта строка
  a:=Memo1.Lines.Strings[Memo1.Lines.Add(StrOfKalendar(Y,NumStr))];
  не внутри цикла?
  даже не так
  вот ЭТО
  выводит 25 раз одну и ту же строку a
  for i:=1 to 25 do
  Image1.Canvas.TextOut(0,0,a);
  причем в одно и то же место
  
  [Дмитрий]
  ))) а как тогда эту процедуру можно изменить что бы нормально все выводила?
  
  [Я]
  подставить правильные аргументы в TextOut(0,0,a);
  первые два аргумента - координаты
  они у тебя всегда 0 почему-то
  последнйи аргумент - какую строку выводить
  
  [Дмитрий]
  да, это кординаты. и он начинает с кординаты (0,0) тоесть с верхнего левого угла
  
  [Я]
  заметь, все 25 вызовов всегда начинают с координаты (0,0)
  
  [Дмитрий]
  ну я там писал
  for i:=0 to 25 do
  TextOut(i,0,a)
  
  [Я]
  во-первых, первая координата, это ось икс
  т.е. ты каждую строчку выводил правее предыдущей
  во-вторых координаты измеряются в пикселях, а не символах
  
  [Дмитрий]
  TextOut(0,i,a)
  18:56:28
  
  [Я]
  т.е. ты каждую строчку на один пиксель правее выводил
  сейчас на один пиксель ниже
  
  [Дмитрий]
  а как тогда можно тут задать цикл?
  i:=i+10
  
  [Я]
  бред
  
  [Дмитрий]
  если так начать этот цикл
  
  [Я]
  i так и должен меняться от 0 до 25
  
  [Дмитрий]
  ну в поле memo 25 строчек
  
  [Я]
  но в аргументах должно стоять значение в несколько раз большее, чем лежит в i
  
  [Дмитрий]
  тоесть можно
  TextOut(0,i*10,a)
  
  [Я]
  умница
  
  [Дмитрий]
  но она все равно выводит все в одну строчку
  
  procedure TForm1.Button1Click(Sender: TObject);
  var
  i:integer;
  a:string;
  begin
  memo1.Clear;
  Y:=StrToInt(EditY.Text);
  D:=StrToInt(EditD.Text);
  M:=StrToInt(EditM.Text);
  for NumStr:=1 to 25 do
  Memo1.Lines.Add(StrOfKalendar(Y,NumStr));
  Memo1.Lines.Add(''); Memo1.Lines.Add('');
  a:=Memo1.Lines.Strings[Memo1.Lines.Add(StrOfKalendar(Y,NumStr))];
  for i:=0 to 25 do
  Image1.Canvas.TextOut(0,i-10,Memo1.Text);
  end;
  вот так я написал
  
  [Я]
  вопрос на засыпку: чем операция умножения отличается от операции вычитания?
  
  [Дмитрий]
  )))
  я перепутал клавищу
  
  [Я]
  теперь надо Memo1.Text поменять
  
  [Дмитрий]
  онм не выводит одну итуже строчку черезе 10 пикселей
  а как его поменять?
  
  [Я]
  брать строки по порядку из Memo1.Lines
  
  [Дмитрий]
  это опять надо через цикл?
  
  [Я]
  у тебя уже есть цикл
  внутри которого координаты ты поправил
  а выводимый текст еще нет
  
  [Дмитрий]
  ну
  
  [Я]
  вот и исправляй Memo1.Text
  
  [Дмитрий]
  что то я не понял как его исправлять?
  
  [Я]
  Lines это массив
  какой элемент массива попросишь, такую строку и получишь
  
  [Дмитрий]
  Memo1.Lines+1 так что ли?
  Memo1.Lines*i
  
  [Я]
  ты как обычно к элементам массива обращаешься?
  
  [Дмитрий]
  ни как)
  вроде
  
  [Я]
  погугли, как с массивами работать тогда )
  
  [Дмитрий]
  procedure TForm1.Button1Click(Sender: TObject);
  var i:integer;
  a:array[1..10] of integer;
  n:integer;//образец
  found:boolean;
  
  begin
  //Введем массив
  for i:=1 to 10 do
  //Преобразуем полученные подстроки в числа
  a[i]:=StrToInt(GetSubStr(Edit1.text,' ',i));//используем пробел в качестве разделителя
  
  n:=StrToInt(Edit2.text);
  found:=false;
  i:=1;
  REPEAT
  if a[i] = n then found:=true
  else i:=i+1;
  UNTIL (i > 10) or (found = true);
  if found then showmessage('Совпадение с элементом номер '+IntToStr(i));
  end;
  типо этого что ли?
  
  [Я]
  типа того
  но это не значит что ЭТО надо копировать
  какая переменнаяв этой процедуре является массивом?
  
  [Дмитрий]
  a
  
  [Я]
  тааак. правильно
  а что пишут, когда хотят из массива элемент получить?
  
  [Дмитрий]
  a[i]:=StrToInt(GetSubStr(Edit1.text,' ',i));
  
  [Я]
  конкретизируй
  какое именно место в этой строке отвечает за получение элемента массива
  
  [Дмитрий]
  a[i]
  
  [Я]
  бинго!
  тогда что надо написать, чтобы получить элемент массива Memo1.Lines?
  
  [Дмитрий]
  a[i]:=Memo1.Lines.Strings[Memo1.Lines.Add(StrOfKalendar(Y,NumStr))];
  
  [Я]
  нааафиг надо
  у тебя он уже заполнен
  
  [Дмитрий]
  в смысде
  
  [Я]
  у тебя есть массив Memo1.Lines
  ИЗ него нужно взять элемент
  
  [Дмитрий]
  что бы он брал по однои строчке из memo1 и перекидывал в image
  
  [Я]
  ты сейчас как джамшут повторяешь )
  
  [Дмитрий]
  )))
  дак я не могу понять, как с этим массивом разобраться
  
  [Я]
  есть у тебя массив A
  
  [Дмитрий]
  ну да
  
  [Я]
  чтобы получить из него седьмой элемент, что нужно написать?
  
  [Дмитрий]
  a[7]
  
  [Я]
  таак. а если массив называется не A а, например, Memo1.Lines?
  
  [Дмитрий]
  Memo1.Lines[7]
  ?
  
  [Я]
  даааа
  а если я хочу не седьмой элемент, а i -ый?
  
  [Дмитрий]
  procedure TForm1.Button1Click(Sender: TObject);
  var
  i:integer;
  begin
  memo1.Clear;
  Y:=StrToInt(EditY.Text);
  D:=StrToInt(EditD.Text);
  M:=StrToInt(EditM.Text);
  for NumStr:=1 to 25 do
  Memo1.Lines.Add(StrOfKalendar(Y,NumStr));
  Memo1.Lines.Add(''); Memo1.Lines.Add('');
  for i:=0 to 25 do
  Image1.Canvas.TextOut(0,i*20,Memo1.Lines[i].Text);
  end;
  то есть вот так?
  
  [Я]
  попробуй
  делфи у тебя стоит, не у меня
  
  [Дмитрий]
  он выдает ощибку пере next
  text
  
  [Я]
  а откуда там Text появился?
  
  [Дмитрий]
  да все выводит
  
  [Я]
  алилуя!
  
  [Дмитрий]
  а как щас там выровнять колонки цифр?
  
  [Я]
  сразу подскажу: используй моноширинный шрифт
  
  [Дмитрий]
  это как понять моноширный шрифт?
  
  [Я]
  шрифт, в отором все символы одинаковой ширины
  куда-нибудь в начало поставь
  Image1.Canvas.Font.Pitch := fpFixed;
  
  [Дмитрий]
  все равно он так же все рисует
  
  [Я]
  тогда погугли что-нибудь в духе delphi+image+fixed font+textout
  
  [Дмитрий]
  тогда еще идин вопрос, а как сейчас убрать поле мемо, и было только image?
  если его удалять то как бы ничего ведь выводиться не будет
  
  [Я]
  первый вариант (джедайский): найти код ,который заполняет мемо и научить его сохранять строки не в мемо а сразу в картинку печатать
  
  второй вариант (на темную сторону силы ведет): сделать memo1 невидимым
  
  [Дмитрий]
  это как?
  на темную силу это как бы получше
  )))
  
  [Я]
  Йода сейчас в гробу с бешенной силой вращается
  
  [Дмитрий]
  понятно
  
  [Я]
  Memo1.visible := false;
  
  [Дмитрий]
  я поставил так, только он все равно не чего не выводит в image
  
  [Я]
  а кнопку нажимал?
  
  [Дмитрий]
  какую?
  
  [Я]
  на которую у тебя повешен вывод календаря в картинку
  
  [Дмитрий]
  я нажал на поле мемо и там ему присвоил false
  
  [Я]
  че?
  
  [Дмитрий]
  в object inspector, с разделе visible япоставил false
  
  [Я]
  воот
  и как, при запуске мемо исчезает?
  
  [Дмитрий]
  да
  
  [Я]
  возмущение в силе чувствую я...
  
  [Дмитрий] )))
Оценка: 4.09*16  Ваша оценка:

Популярное на LitNet.com Д.Хант "Свадьба в планы не входила"(Любовное фэнтези) Д.Максим "Новые маги. Друид"(Киберпанк) С.Панченко "Warm"(Постапокалипсис) А.Кочеровский "Баланс Темного 2"(ЛитРПГ) А.Ардова "Жена по ошибке"(Любовное фэнтези) Ф.Вудворт "Наша сила"(Любовное фэнтези) К.Демина "На краю одиночества"(Любовное фэнтези) М.Атаманов "Искажающие реальность-6"(ЛитРПГ) В.Соколов "Мажор 4: Спецназ навсегда"(Боевик) Ю.Гусейнов "Дейдрим"(Антиутопия)
Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
И.Мартин "Время.Ветер.Вода" А.Кейн, И.Саган "Дотянуться до престола" Э.Бланк "Атрионка.Сердце хамелеона" Д.Гельфер "Серые будни богов.Синтетические миры"

Как попасть в этoт список
Сайт - "Художники" .. || .. Доска об'явлений "Книги"