1

メモ出力の特定の行をテキスト編集ボックスに変換するにはどうすればよいですか?

テキスト ボックスに TAP アダプターに割り当てられた特定の IP アドレスを取得したいと思います。テキスト ボックスに IP のルートを追加しますが、IP をテキスト ボックスにインポートする際にスタックしています。より良いアイデアや IP を照会できる方法はありますかTAP デバイス アダプタまたはその他の簡単な方法から?

net30,ping 5,ping-restart 10,socket-flags TCP_NODELAY,ifconfig 10.8.0.6 10.8.0.5'

10.8.0.5テキスト編集ボックスにインポートされる最後の IP を目指しています。

4

3 に答える 3

3

TStringHelper.Splitを使用してスペース区切り文字で文字列を分割し、最後の文字列を取得します。

function FilterIP(const s: String): String;
var
  splitted: TArray<String>;
begin
  if (s = '') then
    Result := ''
  else begin
    splitted := s.Split([' ']);
    Result := splitted[Length(splitted)-1];
  end;
end;

myEdit.Text := FilterIP(MyMemo[myLine]);

StrUtils.SplitStringを使用して文字列を分割することもできます。

Delphi-7 では、以下を使用できますDelimitedText in TStringList

sList.Delimiter := ' ';
sList.DelimitedText := s;

文字列を分割する他の方法については、こちらを参照してください。


David がコメントで述べたように、文字列の後ろからスペース区切り文字を検索することで、未使用の文字列の割り当てをスキップできます。これはSysUtils.LastDelimiterで行うことができます:

function FilterIP(const s: String): String;
var
  lastIx: Integer;
begin
  lastIx := LastDelimiter(' ',s);
  if (lastIx > 0) then
    Result := Copy(s,lastIx+1)
  else
    Result := '';
end;
于 2016-06-20T07:13:10.947 に答える
2

私だったら、文字列の最後から始めて、最初の空白文字が見つかるまで戻って作業します。必要なテキストは右側にあります。

function FilterIP(const s: string): string;
var
  i: Integer;
begin
  i := Length(s);
  while (i>=1) and (s[i]>' ') do
    dec(i);
  Result := Copy(s, i+1, MaxInt);
end;
于 2016-06-20T08:14:39.400 に答える
0

次のようにすることができます (IP が常に最後にある場合)。

var tmp_str: String;
...
tmp_str:=Memo1.Lines[0]; //change the 0 to your desired line
while(Pos(' ', tmp_str)>0)do Delete(tmp_str, 1, Pos(' ', tmp_str));
Edit1.Text:=tmp_str;
于 2016-06-20T08:06:03.427 に答える