Трусов Андрей Сергеевич :
другие произведения.
1.Студенческое
Самиздат:
[
Регистрация
] [
Найти
] [
Рейтинги
] [
Обсуждения
] [
Новинки
] [
Обзоры
] [
Помощь
|
Техвопросы
]
Ссылки:
Школа кожевенного мастерства: сумки, ремни своими руками
Комментарии: 47, последний от 30/10/2014.
© Copyright
Трусов Андрей Сергеевич
Размещен: 28/01/2013, изменен: 28/01/2013. 13k.
Статистика.
Миниатюра
:
Юмор
Оценка:
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