Delphi 将备忘录输出转换为 edit.text
Delphi converting memo output to edit.text
如何将特定行的备忘录输出到文本编辑框?
我想获得分配给 TAP 适配器的特定 IP 地址到文本框,我在文本框中添加了 IP 的路由,但是在将 IP 导入到文本框时遇到了问题,有没有更好的主意或方法我可以从 TAP 设备适配器或任何其他更简单的方法查询 IP?
net30,ping 5,ping-restart 10,socket-flags TCP_NODELAY,ifconfig 10.8.0.6 10.8.0.5'
我针对最后一个IP10.8.0.5
要导入到文本编辑框。
用 space 分隔符使用 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;
请参阅 here 以了解其他拆分字符串的方法。
正如 David 在评论中提到的,您可以通过从字符串后面搜索 space 分隔符来跳过分配未使用的字符串。这可以通过 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;
你可以这样做(如果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;
如果是我,我会从字符串的末尾开始,然后往回查找,直到找到第一个 space 字符。您需要的文字可以在右侧找到。
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;
如何将特定行的备忘录输出到文本编辑框?
我想获得分配给 TAP 适配器的特定 IP 地址到文本框,我在文本框中添加了 IP 的路由,但是在将 IP 导入到文本框时遇到了问题,有没有更好的主意或方法我可以从 TAP 设备适配器或任何其他更简单的方法查询 IP?
net30,ping 5,ping-restart 10,socket-flags TCP_NODELAY,ifconfig 10.8.0.6 10.8.0.5'
我针对最后一个IP10.8.0.5
要导入到文本编辑框。
用 space 分隔符使用 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;
请参阅 here 以了解其他拆分字符串的方法。
正如 David 在评论中提到的,您可以通过从字符串后面搜索 space 分隔符来跳过分配未使用的字符串。这可以通过 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;
你可以这样做(如果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;
如果是我,我会从字符串的末尾开始,然后往回查找,直到找到第一个 space 字符。您需要的文字可以在右侧找到。
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;