|
Основной форум Сюда все проблемы связанные с программированием. |
23.12.2008, 17:42
|
#1
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
убавлять сиволы
У мя есть текст, s1:=copy(vopros[m],0,dlina2/2);
Как вы видите, s=взять символы из другой строки от 0до середины, другая строка равно например vopros[m]:='Программирование на MP';
Как мне сделать так, чтобы s равнялась от начала до пробела, т.е чтоб например было не 'Программирова' , а 'Программирование' . Может как-то надо убавлять символы до тех пор , пока... Незна.ю помогите
|
(Offline)
|
|
23.12.2008, 18:12
|
#2
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: убавлять сиволы
i:=0; // не обизательно обнулять Str:=''; // не обезательно очищать getChar(s,i); i:=i+1; while i<>' ' do // пока і не равно "ПРОБЕЛ" begin str:=str+getChar(s,i); i:=i+1; end;
Последний раз редактировалось beZ_probleM, 23.12.2008 в 18:40.
|
(Offline)
|
|
23.12.2008, 18:23
|
#3
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: убавлять сиволы
Все гораздо проще: s:=copy(0,pos(' ',vopros[1])-1,vopros[1]). Примерно так, может где-то на один символ ошибся, т.е. надо добавить/отнять единицу.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.12.2008, 18:45
|
#4
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: убавлять сиволы
так правельнее :
s:=copy(vopros[1],0,pos(vopros[1],' ')-1)
|
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.12.2008, 15:29
|
#5
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
Ответ: убавлять сиволы
спасибо, я почти так и думал
|
(Offline)
|
|
24.12.2008, 15:44
|
#6
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
Ответ: убавлять сиволы
beZ_probleM, в твоем коде while i<>' ' do , но i же integer? код не работает
или подскажите как pos(vopros[m],' '); и вообще как вернуть не первое, а например третье сопадение с помощью pos??
Последний раз редактировалось temned, 24.12.2008 в 16:12.
|
(Offline)
|
|
24.12.2008, 16:23
|
#7
|
Разработчик
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений (для 637 пользователей)
|
Ответ: убавлять сиволы
Вот код, который ищет 10-е появление строки fragm в строке s.
str:=s;
for i:=1 to 10 do
begin
n:=Pos(s1,fragm);
str:=Copy(str,Pos(str,fragm)+length(fragm),length(str));
end;
|
(Offline)
|
|
24.12.2008, 19:12
|
#8
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
Ответ: убавлять сиволы
pos(vopros[m],' '); как вернуть не первое, а например третье сопадение с помощью pos??
|
(Offline)
|
|
24.12.2008, 19:35
|
#9
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: убавлять сиволы
Сообщение от TEMNED
pos(vopros[m],' '); как вернуть не первое, а например третье сопадение с помощью pos??
|
С помощью pos нельзя, если только удалять фрагмент строки до предыдущего совпадения и после этого использовать pos, а так - только перебором всей строки в цикле.
|
(Offline)
|
|
24.12.2008, 20:13
|
#10
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: убавлять сиволы
Код который находит третий пробел и соответственно его номер
i:=0; j:=0; // не обизательно обнулять Str:=''; // не обезательно очищать getChar(s,i); i:=i+1; repeat while i<>' ' do // пока і не равно "ПРОБЕЛ" begin str:=str+getChar(s,i); i:=i+1; end; j:=j+1; until j=3;
|
(Offline)
|
|
24.12.2008, 20:30
|
#11
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
Ответ: убавлять сиволы
i integer, как он может быть равен <>''? Vint обьясни свои вариант на примере
|
(Offline)
|
|
24.12.2008, 20:38
|
#12
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: убавлять сиволы
сорри извеняюсь) действительно ступил))) Ы
прост пишу с головы) на практике не реализовую
while getChar(s,i)<>' ' do
|
|
(Offline)
|
|
24.12.2008, 20:51
|
#13
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: убавлять сиволы
вот с помощью рos
s2:=vopros[1]; repeat s:=copy(s2,0,pos(s2,' ')-1); s1:=s1+s; // строка из слов которые находятсо до пробелов s2:=copy(s2,pos(s2,' '),length(s2)-1); i:=i+1; until i=3; //количество пробелов
Последний раз редактировалось beZ_probleM, 25.12.2008 в 01:49.
|
(Offline)
|
|
04.01.2009, 20:22
|
#14
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
фигня+
у мя такая фигня возникла. Имеется массив из 16строк, строки загружаются из rms. делаю футбольный менеджер, и строка имеет формат: 'Робинье/10\bra', где есть имя/номер\страна.
мне надо так:
name[i]:=copy(0,затем pos, из g[i], до тех пор пока не найдет /)
но поему не полушается, в шом проблема?
|
(Offline)
|
|
04.01.2009, 22:30
|
#15
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: убавлять сиволы
затем pos, из g[i], до тех пор пока не найдет /
|
непонятно
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:02.
|