Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удалить символ конца строки 
:(
    Опции темы
EDuard
Дата 17.1.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 1.8.2005
Где: Синее нигде

Репутация: 2
Всего: 7



Есть ли в Дельфи функция удаления символа конца строки?
Если нет готовой то как это можно реализовать?

Например в мемо две строки

"йцуаыва мвавп м "
"вчмсимими и счми "

Как получить "йцуаыва мвавп м вчмсимими и счми "?


--------------------

PM MAIL WWW ICQ   Вверх
_hunter
Дата 17.1.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



проходи по тексту и удаляй все символы с кодами 10 и 13


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
EDuard
Дата 17.1.2006, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 1.8.2005
Где: Синее нигде

Репутация: 2
Всего: 7



_hunter, можно пример?


--------------------

PM MAIL WWW ICQ   Вверх
Guedda
Дата 17.1.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Код

for i := 0 to length(s) do //s = твои две строки
begin
  SetLength(u, length(s));
  c := ord(s[i]);
  if с = #10 or с = #13 then с := #0; // либо c := ord(' ');
  u[i] := chr(c);
end;


Это сообщение отредактировал(а) Guedda - 17.1.2006, 11:34


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
_hunter
Дата 17.1.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



что-то типа
int i =1;
while ( i <= str.Length() )
{
if ( str[i] == '\n' )
str.Delete(i, 1);
else
i++;
}
а лучше ( если производительность имеет значение ) писать в другую строку все символы кроме указанных


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Guedda
Дата 17.1.2006, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Цитата(_hunter @ 17.1.2006, 11:34)
что-то типа
int i =1;
while ( i <= str.Length() )
{
if ( str[i] == '\n' )
str.Delete(i, 1);
else
i++;
}
а лучше ( если производительность имеет значение ) писать в другую строку все символы кроме указанных

Вообще форум Delphi, а Вы Сишные коды пишете smile


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
_hunter
Дата 17.1.2006, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



Guedda, а разве строки не с еденицы начинаются?
Добавлено @ 11:39
это можно назвать псевдо-(делфийским)кодом
главное что смысл понятен.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Alexeis
Дата 17.1.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Код

sFirst, sSecond : Ansistring;
Begin
  For i := 1 to length(sFirst)
  do
     if (sFirst[i]<>#10) and  (sFirst[i]<>#13) 
     then
       sSecond := sSecond + sFirst[i]
end;




--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rennigth
Дата 17.1.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



smile
Guedda перевод C Builder-a -> Delphi огромная проблемма. smile



--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Romikgy
Дата 17.1.2006, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Код

var i: integer;
      sx: string;
begin
sx:='';
for i:=0 to Memo1.Lines.Count-1 do
sx:=sx+' ' +TrimRight(Memo1.Lines[i]);
end;



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Guedda
Дата 17.1.2006, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Метод, описанный Romikgy с большими файлами может не работать. У меня, допустим, с таким методом+файлом 1,43Мб, возникла ошибка.
Так как string имеет допустимый размер (255 байт, кажется)


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Romikgy
Дата 17.1.2006, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата

String types
Type Maximum length Memory required Used for
ShortString 255 characters 2 to 256 bytes backward compatibility
AnsiString ~2^31 characters 4 bytes to 2GB 8-bit (ANSI) characters, DBCS ANSI, MBCS ANSI, etc.
WideString ~2^30 characters 4 bytes to 2GB Unicode characters; multi-user servers and multi-language applications

string == AnsiString


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Alexeis
Дата 17.1.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Romikgy я посмотрел код
Код


function TrimRight(const S: string): string;
var
  I: Integer;
begin
  I := Length(S);
  while (I > 0) and (S[I] <= ' ') do Dec(I);
  Result := Copy(S, 1, I);
end;


TrimRight удаляет только пробелы справа smile
Добавлено @ 15:15
причем все


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Romikgy
Дата 17.1.2006, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Да странно а так в хелпе
Код

Trims trailing spaces and control characters from a string.

Тогда так
Код

StringReplace(Memo1.Lines.Text,#13#10,' ',[rfReplaceAll]); 

или так
Код

StringReplace(Memo1.Lines.Text,#13,' ',[rfReplaceAll]); 
StringReplace(Memo1.Lines.Text,#10,' ',[rfReplaceAll]); 




--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Демо
Дата 17.1.2006, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Код

function DelBreakLine(const s: String): String;
var
  i,pz: Integer;
  Len: Integer;
begin
  Len := Length(s);
  SetLength(Result,Len);
  pz := 0;
  for i := 1 to Len do
  begin
    case s[i] of
       #13,#10: Continue;
    else
      begin
         Inc(pz);
         Result[pz] := s[i];
      end;
    end;
  end;
  SetLength(Result,pz);
end;



--------------------
    
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0916 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.