repeat
i := Pos('#', str);
if i > 0 then begin
str1 := Copy(str, 1, i - 1);
str := Copy(str, i + 1, Length(str) - i);
... { рисуй str1 }
end else begin
... { рисуй str }
end;
until i = 0;
Текст и графика
У меня есть проблемка:
1) Есть типизированный файл
Type question = record
que:string;-это вопрос
vars:array[1..3] of string; варианты ответа
end;
...
var
f:file of question;
...
мне нужно считать из этого файла вопрос, варианты ответа и вывести этот текст в графическом режиме. Но как это сделать, если большая строка обрезается? Помогите плизз! И желательно сделать, чтобы она выводилась в определенном месте.
2) Написал процедуру для первого случая
в строке, где нужно сделать переносы, я ставлю символы #, она разбивается на подстроки и выводиться. Но вот проблема: Если строка до переноса больше строки после переноса, то вторая выводится с частью "мусора" первой строки. Что делать?
procedure WRTEXT( x,y,r:integer;str : string );
var
tmp:string;
i,j,k:byte;
begin
i:=0;j:=0;k:=0;
while i < length(str)+1 do
begin
inc(k);
while (str <> '#') and ( i < length(str)+1) do
begin
tmp[j]:=str;
inc(i);inc(j);
end;
OutTextXY(x,y + k*r,tmp);
j:=0;inc(i);tmp:='';
end;
end;
А что, не выходит поделить строку на подстроки? Строка максимум 255 символов, так что тут уже задача по выводу упрощается.
Про какой мусор ты говоришь? Вроде не замечал никогда..
Цитата:
Originally posted by int
Чего-то у тебя while два раза повторяется.
А что, не выходит поделить строку на подстроки? Строка максимум 255 символов, так что тут уже задача по выводу упрощается.
Про какой мусор ты говоришь? Вроде не замечал никогда..
Чего-то у тебя while два раза повторяется.
А что, не выходит поделить строку на подстроки? Строка максимум 255 символов, так что тут уже задача по выводу упрощается.
Про какой мусор ты говоришь? Вроде не замечал никогда..
1)While 2 раза чтобы он всю строку просканировал.
2)Если в строке 1 слово, а я разобью на 2 и выведу, получиться пустая строка, а это не есть хорошо..
3)Мусор появляеться в следствии несоответствия длин 2-х строк. если строка str1:='shooow', str2:='aux', то у меня 2-ая строка получиться auxoow.Но почему я и сам не знаю.
Цитата:
Originally posted by CapitnBlack
1)While 2 раза чтобы он всю строку просканировал.
2)Если в строке 1 слово, а я разобью на 2 и выведу, получиться пустая строка, а это не есть хорошо..
3)Мусор появляеться в следствии несоответствия длин 2-х строк. если строка str1:='shooow', str2:='aux', то у меня 2-ая строка получиться auxoow.Но почему я и сам не знаю.
1)While 2 раза чтобы он всю строку просканировал.
2)Если в строке 1 слово, а я разобью на 2 и выведу, получиться пустая строка, а это не есть хорошо..
3)Мусор появляеться в следствии несоответствия длин 2-х строк. если строка str1:='shooow', str2:='aux', то у меня 2-ая строка получиться auxoow.Но почему я и сам не знаю.
Возможно твои проблемы от того, что ты неправильно работаешь со строками в Паскале.
Там они представляют собой массив символов, у которого индексы начинаются с 1, а не с 0. Последний символ находится в позиции Length(str).
Код:
Благодарю всех за помощь!
Эх, а я только вот хотел прогу написать по этому делу =)) А то курсовик делать неохота. Ну раз уже всё разобрали, пойду другую отмазку от курсовика поищу
если есть время, пожалуйста:
http://forum.codenet.ru/showthread.php?t=26483
а вообще от подобных высказывании, плиз, воздерживайся.
тема закрыта :)