Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как в строке отрезать последние три символа?


Страницы:   1 2

Mark86rus ©   (2006-04-28 21:30:00) 

В общем прога забирает инфу с сайта ! но после вывода ее в мемо в конце предложения появляются три знака "ентер" (маленькие квадратики)! Как их отрезать?
///-----вот тело проги
type
TConvertChars = array[ #128..#255] of char;
TForm1 = class(TForm)
  TcpClient1: TTcpClient;
  Memo1: TMemo;
  Timer1: TTimer;
  procedure Timer1Timer(Sender: TObject);
  procedure FormCreate(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;

var
Form1: TForm1;
const
Koi: Array[0..66] of Char = ('T', 'Ё', 'ё', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж',
'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р',
'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ',
'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д',
'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о',
'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш',
'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
Win: Array[0..66] of Char = ('ё', 'Ё', 'T', 'ю', 'а', 'б', 'ц', 'д', 'е', 'ф',
'г', 'х', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п',
'я', 'р', 'с', 'т', 'у', 'ж', 'в', 'ь', 'ы', 'з',
'ш', 'э', 'щ', 'ч', 'ъ', 'Ю', 'А', 'Б', 'Ц', 'Д',
'Е', 'Ф', 'Г', 'Х', 'И', 'Й', 'К', 'Л', 'М', 'Н',
'О', 'П', 'Я', 'Р', 'С', 'Т', 'У', 'Ж', 'В', 'Ь',
'Ы', 'З', 'Ш', 'Э', 'Щ', 'Ч', 'Ъ');
implementation

{$R *.dfm}

Function KoiToWin(Str: string): string;
var
i, j, Index: Integer;
Begin
Result := '';
For i := 1 to Length(Str) do
Begin
Index := -1;
For j := Low(Win) to High(Win) do
If Koi[j] = Str[i] Then
Begin
Index := j;
Break;
End;
If Index = -1
Then Result := Result + Str[i]
Else Result := Result + Win[Index];
End;
End;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
TcpClient1.connect;
memo1.Lines.Clear;
memo1.Lines.Add(TcpClient1.Receiveln());
memo1.Text:=KoiToWin(memo1.Text);
TcpClient1.Disconnect;
end;

end.


Asail   (2006-04-30 01:01:00) [1]


> Попробуй сам и поймешь, что разницы не произошло!

См. свой собственный пост:

> Mark86rus ©   (29.04.06 16:10) [13]

> 0 стоит потому, что мне не надо вырезать сначала ни одного
> символа! Если ставить любое другое значение больше 0то
> просто срезаетсятекст в начале предложения!


Так как-же все-таки при 1-це "срежется" первый символ или нет?.. Ты уж опредились - есть разница или нет.

> begin...end ©   (29.04.06 20:50) [22]
> > Mark86rus
>
> Хам.

А вообще, согласен


ЛшдлуттнСфе   (2006-04-29 20:52:00) [2]

procedure TForm1.Timer1Timer(Sender: TObject);
begin
TcpClient1.connect;
memo1.Lines.Clear;
memo1.Lines.Add(TcpClient1.Receiveln());
memo1.Text:=KoiToWin(memo1.Text);

TcpClient1.Disconnect;
end;


begin...end   (2006-04-29 20:50:00) [3]

> Mark86rus

Хам.


Mark86rus   (2006-04-29 20:46:00) [4]

Опять "умники" повылазили! Попробуй сам и поймешь, что разницы не произошло!

Есть предложение другого кода? пиши, буду рад, а если решил мозг компассировать, то не в ту тему включился!


antonn   (2006-04-29 18:26:00) [5]

Mark86rus ©   (29.04.06 16:54) [18]
0 или 1 я не увидел разницы в полученных данных! тоесть он все принял нормально!

ну не смеши народ...


Asail   (2006-04-29 17:23:00) [6]


> тоесть он все принял нормально!

А он, в данном случаеи -100 принял-бы нормально :-).


> кроме как прокоментировать что то ненужное прошу не лезть
> на эту тему

На сколько я видел, ИМХО, все коментарии относились к делу...


Mark86rus   (2006-04-29 16:54:00) [7]


> 1. Не 0, а 1 (это правильнее).

0 или 1 я не увидел разницы в полученных данных! тоесть он все принял нормально!

разницу я знаю не первый год!

А насчет того чтобы развивать эту тему, то да без проблем! Оставляйте предложения, коды! А "умников", которые кроме как прокоментировать что то ненужное прошу не лезть на эту тему


Asail   (2006-04-29 16:45:00) [8]


> Вместо развития уже оконченной темы , лучше бы другим помогали!


Эту ветку читают и другие, так-что желательно, что-бы они не повторяли чужие ошибки.


Asail   (2006-04-29 16:44:00) [9]

Правильно, кроме двух моментов:

1. Не 0, а 1 (это правильнее). Номера символов в строке начинаются с 1, а не с 0.

2. Копирование из текста определенного значения не вырезка, а копирование (т.к. не изменяется исходная строка). Разницу между виндовскими Copy и Cut улавливаешь?


Mark86rus   (2006-04-29 16:24:00) [10]


> Zeqfreed

копирование из текста определенного значения разве не вырезка?!

вот и именно то, что я хотел скопировать тескт без последних символов!


Zeqfreed   (2006-04-29 16:16:00) [11]

[13] Mark86rus ©   (29.04.06 16:10)

> Ты так и не понял!


Copy (даже если судить по названию и мыслить логически) копируетподстроку из строки, а не вырезаетчто бы то ни было. Второй параметр — номер символа (начиная с 1) в строке, начиная с которого будет произведено копирование подстроки. Третий — кол-во символов в копируемой подстроке.


Mark86rus   (2006-04-29 16:10:00) [12]


> Похоже, автор считает, что при нуле происходит копирование,
>  иначе - вырезание.

Ты так и не понял! 0 стоит потому, что мне не надо вырезать сначала ни одного символа! Если ставить любое другое значение больше 0 то просто срезается текст в начале предложения!


Mark86rus   (2006-04-29 15:57:00) [13]

Какие же вы самовлюбленные!
Вместо развития уже оконченной темы , лучше бы другим помогали!


Anatoly Podgoretsky   (2006-04-29 15:24:00) [14]

F1 не поможет


Плохиш   (2006-04-29 11:39:00) [15]


> Mark86rus ©   (29.04.06 03:11) [8]
> Терь понял!? Или ты решил меня проверить???

По предмету 2.

PS. Нумерация в строках начинается с 1, а не с 0.


Loginov Dmitry   (2006-04-29 08:35:00) [16]

Похоже, автор считает, что при нуле происходит копирование, иначе - вырезание.
А F1 помог бы, ИМХО.


Mark86rus   (2006-04-29 03:11:00) [17]

написав то что я хотел срезать 3 ентера с конца я просто не посчитал нужным писать что там есть еще 2 пробела! Ну сам посуди: если ты понял или подсказали как срезать одно значение, то насколько надо быть тупым чтобы не понять как  срезать больше значений!? а срезать с начала строки можно, если только она не изменяется. Если она меняется , то подогнав срезку под одно значение , невозможно быть уверенным, что новое значение будет такой же длинны!

Терь понял!? Или ты решил меня проверить???


Германн   (2006-04-29 02:46:00) [18]


> терь ты понял, что твой метод тыка тут не катит!!!

Не, не понял. :-(

> 1) 0-потому что в начеле предложения мне ничего вырезать
> не надо.

Слава богу! А то ты там бы так "навырезовал"!

> 2) -5-потому что от исходного текста отрежет 2 последних
> пробела и ентеры от которых и хотел избавиться!

И как это совместить с твоими же словами

> где -5 в моем случае срезание с конца 3-х "ентеров"!!!


Mark86rus   (2006-04-29 02:31:00) [19]

да  нет не метод "тыка" как ты это называешь! Тебе что объяснить почему 0 и 5 стоит?
1) 0-потому что в начеле предложения мне ничего вырезать не надо.
2) -5-потому что от исходного текста отрежет 2 последних пробела и ентеры от которых и хотел избавиться!

терь ты понял, что твой метод тыка тут не катит!!!


Германн   (2006-04-29 01:38:00) [20]


> Mark86rus ©   (29.04.06 00:37) [4]
>
> Все сделал! вот такую строку надо было
>
> Memo1.Text:=copy(memo1.text, 0, length(memo1.text)- 5)


Да уж! Метод "тыка" процветает.
Тут уж и ноль и пять!
Ну а скорее всего - двойка по предмету. ИМХО.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо