Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.10.2011, 22:17
Skeptic Skeptic вне форума
Прохожий
 
Регистрация: 10.10.2011
Сообщения: 2
Репутация: 10
Печаль как в Delphi скопировать весь текст от нужного символа до конца строки?

гуглил очень долго прежде чем спросить,но мозг уже понемножку закипает, поетому приходится спрашивать. итак
допустим есть Memo1 и там есть такой текст :

ferrari : megosupercar
zaporozhets : polnui_otstoi

так вот! как скопировать только часть текста megosupercar??? чтобы не зацепляло следущую строку ??

я так понимаю будет что-то вида

Код:
procedure TForm1.Button3Click(Sender: TObject); 
 var 
 copyresult : string; 

 begin 
 copyresult:=Copy(Memo1.Lines.Text, Pos(':',Memo1.Lines.Text),ВОТ_ЗДЕСЬ _ВОТ_НУЖНО_НАПИСАТЬ_ЧТО-ТО_ЧТОБЫ_СЧИТЫВАЛО_ТОЛЬКО_ДО_КОНЦА_ СТРОКИ); 
 end; 
буду оч. благодарен за совет )

Последний раз редактировалось lmikle, 10.10.2011 в 23:36.
Ответить с цитированием
  #2  
Старый 10.10.2011, 22:31
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ну по поводу, что ТС - гуглил очень долго прежде чем спросить - откровенное враньё. Нажимаем F1 читаем справку по Copy и Pos, а заодно смотрим, приложенные там же примеры.
Код:
var
  I : Integer;
begin
  for I := 0 to Memo1.Lines.Count - 1 do
    if Pos('megosupercar', Memo1.Lines[i] > 0 then
    begin
      copyresult := Copy(Memo1.Lines[i], Pos(':', Memo1.Lines[i] + 1, Length(Memo1.Lines[i]));
      Break; 
    end;
end;
надеюсь всё верно нарисовал.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 10.10.2011, 22:49
Skeptic Skeptic вне форума
Прохожий
 
Регистрация: 10.10.2011
Сообщения: 2
Репутация: 10
Радость

angvelem
Сори, реально старался найти ))!
вопщем если вставляю ваш код :
PHP код:
var
  
Integer;
begin
  
for := 0 to Memo1.Lines.Count do
    if 
Pos('megosupercar'Memo1.Lines[i] > 0 then
    begin
      copyresult 
:= Copy(Memo1.Lines[i], Pos(':'Memo1.Lines[i] + 1Length(Memo1.Lines[i]));
      Break; 
    
end;
end
пишет какую-то ошибку ....
[DCC Warning] Unit1.pas(148): W1058 Implicit string cast with potential data loss from 'string' to 'ShortString'

ну я вопщем уже разобрался, помогли хорошие люди советом)))!!
код такой
PHP код:
var copyresult string;
 
p1 integer;
 
begin
 p1 
:= Pos(':'Memo1.Lines.Text);
 if 
p1>0 then begin
 copyresult 
:= Copy(Memo1.Lines.Textp1+1Length(Memo1.Lines.Text)-p1);
 if 
Pos(#13,copyresult)>1 then
 
copyresult := Copy(copyresult1Pos(#13,copyresult)-1);
 
end
этот работает ! копирует от двоеточия до конца строки ))! ура!)
Ответить с цитированием
  #4  
Старый 10.10.2011, 22:55
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Стандартное предупреждение для Дельфи 2009 и выше. У вас используется тип String, отсюда и ноги растут.
То чем вам помогли люди добрые, будет работать, но только в том случае, если ваша искомая строка находится в первой строке TMemo. Теперь попробуйте поменять строки в TMemo местами и снова поискать.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 10.10.2011 в 22:58.
Ответить с цитированием
  #5  
Старый 11.10.2011, 08:57
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Copy function
Returns a substring of a string or a segment of a dynamic array.
function Copy(S; Index, Count: Integer): string;
...
If Index is larger than the length of S, Copy returns an empty string or array.
If Count specifies more characters or array elements than are available, only the characters or elements from S[Index] to the end of S are returned.
поэтому:
Код:
Copy('procedure TForm1.FormCreate(Sender: TObject);', 11, MaxInt);
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:40.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025