Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2010, 12:59   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию Убрать символ в конце строки

Какие изменения надо внести в данный код, чтобы в конце строки был убран символ ; (192.168.0.1;27888;empty;)?
Код:
function VarPos(var sBuffer: string; Delim: char = #13): string;
var
Poz: Integer;
begin
Poz:=Pos(Delim, sBuffer);
Result:=Copy(sBuffer, 0, Poz-1);
Delete(sBuffer, 1, Poz);
end;

procedure TForm1.LBServersMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
SomStr: string;
begin
if LBServers.ItemIndex < 0 then begin
Exit;
end;
SomStr:=LBServers.Items[LBServers.ItemIndex];
EIP.Text:=VarPos(SomStr, ';');
EPort.Text:=VarPos(SomStr, ';');
EPas.Text:=VarPos(SomStr, ';');
end;
Shouldercannon вне форума Ответить с цитированием
Старый 08.01.2010, 13:07   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

если исходная строка
Код:
 (192.168.0.1;27888;empty;)
и положение ; всегда перед последним символом ), то тогда так:
Код:
 s:= '(192.168.0.1;27888;empty;)';
 delete(s, length(s)-1, 1);
если вы скобочки привели случайно, то просто length(s).
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 08.01.2010, 13:09   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Исходная строка 192.168.0.1;27888;empty;

Последний раз редактировалось Shouldercannon; 08.01.2010 в 13:30.
Shouldercannon вне форума Ответить с цитированием
Старый 08.01.2010, 13:52   #4
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,480
По умолчанию

Вот держи, удаляет все кроме адресов и заменяет ; на : между портом.
Код:
procedure Delimiter(FileName: string; List: TListBox);
var
  i: Integer;
begin
 try
  List.Items.LoadFromFile(FileName);
 finally
  for i:= 0 to List.Items.Count -1 do
  List.Items.text:= StringReplace(StringReplace(StringReplace(
  List.Items.Text,#10#13,'',[rfReplaceAll]),';empty;','',
  [rfReplaceAll]),';',':',[rfReplaceAll]);
 end;
end;

Последний раз редактировалось uberchel; 08.01.2010 в 13:58.
uberchel вне форума Ответить с цитированием
Старый 08.01.2010, 14:27   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Небольшая поправка на месте empty может быть что угодно.

Последний раз редактировалось Shouldercannon; 08.01.2010 в 14:47.
Shouldercannon вне форума Ответить с цитированием
Старый 08.01.2010, 14:38   #6
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,480
По умолчанию

Поменять воответственно на то которое будет сдесь:
Код:
List.Items.text:= StringReplace(StringReplace(StringReplace(
List.Items.Text,#10#13,'',[rfReplaceAll]),';empty;','',
[rfReplaceAll]),';',':',[rfReplaceAll]);
или если будет неизвестно какое, то тогда только в помощь вам Length,Copy,Pos.
uberchel вне форума Ответить с цитированием
Старый 08.01.2010, 15:59   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

А если сделать так:
IP считываем поле первого символа :, Port после второго : слева, а пароль тоже после второго :, но справа.
Вложения
Тип файла: rar Projects.rar (5.8 Кб, 10 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 09.01.2010, 11:19   #8
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Смог разрулить таким образом
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    LBServers: TListBox;
    Panel1: TPanel;
    Button1: TButton;
    EIP: TEdit;
    Eport: TEdit;
    EPas: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure LBServersMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function VarPos(var sBuffer: string; Delim: char = #13): string;
var
Poz: Integer;
begin
Poz:=Pos(Delim, sBuffer);
Result:=Copy(sBuffer, 0, Poz-1);
Delete(sBuffer, 1, Poz);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
LBServers.Items.LoadFromFile((ExtractFilePath(Application.ExeName))+'servers.txt');
end;

procedure TForm1.LBServersMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
SomStr: string;
begin
if LBServers.ItemIndex < 0 then begin
Exit;
end;
SomStr:=LBServers.Items[LBServers.ItemIndex]+':';
EIP.Text:=VarPos(SomStr, ':');
EPort.Text:=VarPos(SomStr, ':');
EPas.Text:=VarPos(SomStr, ':');
end;

end.
Shouldercannon вне форума Ответить с цитированием
Старый 09.01.2010, 11:58   #9
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

А если просто замените последний символ на #0? Ну потеряешь может один байт памяти, но это как-бы не беда. Зато в быстродействии приуспишь...
Altera вне форума Ответить с цитированием
Старый 09.01.2010, 12:05   #10
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Получится
Код:
SomStr:=LBServers.Items[LBServers.ItemIndex]+#0;
?
Shouldercannon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 7, удалить символ в конце файла Flame_of_Death Помощь студентам 5 10.08.2009 06:32
Аналог функции Trim-удаление лишних пробелов в начале и в конце передаваемой строки GULINA Помощь студентам 6 23.05.2009 15:07
Как нолики в конце убрать? и в чем ошибка? lubafffka Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2008 18:52
Потоки и символ конца строки Deatz Общие вопросы C/C++ 3 07.05.2008 20:02
как присвоить char'у символ перевода строки? Retiz Помощь студентам 6 06.04.2008 00:05