如何捕获备忘录文本以编辑Delphi

如何捕获备忘录文本以编辑Delphi,delphi,wildcard,delphi-7,tmemo,Delphi,Wildcard,Delphi 7,Tmemo,我想将动态网关IP捕获到文本框的备忘录中。 如何使用通配符或捕获以“gateway:10.127.*.*”开头的整个网关行,并将网关IP发送到文本框中 以下是已捕获的备忘录文本示例: Description: Microsoft Hosted Network Virtual Adapter HW Address Length: 6 HWAddress: E0:2A:82:F9:B2:3E Index: 32 Type: 71 CurrentIPAddress: IP Addresses:

我想将动态网关IP捕获到文本框的备忘录中。 如何使用通配符或捕获以“gateway:10.127.*.*”开头的整个网关行,并将网关IP发送到文本框中

以下是已捕获的备忘录文本示例:

Description: Microsoft Hosted Network Virtual Adapter
HW Address Length: 6
HWAddress: E0:2A:82:F9:B2:3E
Index: 32
Type: 71
CurrentIPAddress: 
IP Addresses:    192.168.48.1/255.255.255.0
Gateway:    0.0.0.0/255.255.255.255
Name: {22712B8F-5E3A-48D4-8C0D-771708BF0305}
Description: HUAWEI Mobile Connect - Network Card
HW Address Length: 6
HWAddress: 0C:5B:8F:27:9A:64
Index: 4
Type: 243
CurrentIPAddress: 
IP Addresses:    10.127.144.193/255.255.255.252
Gateway:    10.127.144.194/255.255.255.255
编辑:(来自评论)


实现这一点的最简单的方法是迭代备忘录的行,并检查它是否以“Gateway:10.127”开头

例如:

for LString in memo.Lines do
  if AnsiStartsText('Gateway:    10.127.', LString) then
    textbox.Caption := LString

您还可以使用正则表达式进行更具体的处理。

实现这一点的最简单方法是迭代备忘录的行,并检查它是否以“Gateway:10.127”开头

例如:

for LString in memo.Lines do
  if AnsiStartsText('Gateway:    10.127.', LString) then
    textbox.Caption := LString

您还可以使用正则表达式进行更具体的处理。

这是勒内答案的Delphi 7版本:

var
  ii: integer
begin
  for ii := 0 to memo.lines.count -1 do begin
    if pos('Gateway:   10.127.', memo.lines[ii]) > 0 then begin
      textbox.caption := memo.lines[ii];
      break; 
    end;
  end;
end;

这是勒内答案的Delphi 7版本:

var
  ii: integer
begin
  for ii := 0 to memo.lines.count -1 do begin
    if pos('Gateway:   10.127.', memo.lines[ii]) > 0 then begin
      textbox.caption := memo.lines[ii];
      break; 
    end;
  end;
end;


什么版本的Delphi?最新版本支持正则表达式,可用于在此处提供帮助;早期版本没有。您认为这其中的哪一部分具有挑战性?为什么要使用GUI控件进行文本处理?你的代码看起来像什么?您希望我们为您编写代码吗?我有一个示例代码,但只得到行号
i:=Pos('Gateway:10.127',Memo1.Text);如果I>0,则开始L:=SendMessage(Memo1.Handle,EM_LINEFROMCHAR,(intTostr(1);edit1.Text:=(intTostr(L))
后面似乎有3个空格:
。你到底为什么要使用
EM\u LINEFROMCHAR
?这太疯狂了。你在进行文本处理。没有GUI控件的位置。你知道如何调试你的代码吗?如果不知道,那么其他一切都是毫无意义的。停止你正在做的事情,学习调试。什么版本的Delphi?最新版本sions支持正则表达式,可以在这里提供帮助;早期版本不支持。您认为这其中的哪一部分具有挑战性?为什么要使用GUI控件进行文本处理?您的代码是什么样子的?您希望我们为您编写代码吗?我有一个示例代码,但只获取行号
i:=Pos('Gateway:10.127',Memo1.Text);如果I>0,则开始L:=SendMessage(Memo1.Handle,EM_LINEFROMCHAR,(intTostr(1);edit1.Text:=(intTostr(L))
后面似乎有3个空格:
。你到底为什么要使用
EM\u LINEFROMCHAR
?这太疯狂了。你在进行文本处理。没有GUI控件的位置。你知道如何调试代码吗?如果不知道,那么其他一切都是毫无意义的。停止你正在做的事情,学习调试。Delphi 7没有用于..i的功能n循环,也不是建议可能有帮助的正则表达式。您需要使用带有索引的for循环,有点像:for I:=0 to memo.lines.count-1 doDelphi 7没有for..in循环,也没有建议可能有帮助的正则表达式。您需要使用带有索引的for循环,有点像:for I:=0 to memo.lines.count-1 dothanks很多@Micheal Vicent它工作得很好它的捕获我如何删除网关:word并只保留
10.127的结果。
@JkRobbin你认为这会怎样做?你真的放弃了自己解决这个问题的所有希望吗?这是简单的文本处理。不要在评论中提出新问题。为什么找不到教程、教科书甚至文档。你肯定不是第一个想提取子字符串的人吗?你确定你自己无法解决这个问题吗?我知道我听起来很苛刻,但你只是不够努力,而且这个网站不打算教新手如何做基本任务。请访问。我们是来建立的ld是对未来访问者有用的问答帖子资源。仅为了完整性:您不能信任创建和捕获文本中的空格或符号!这里不是100%,而是更好的:
if pos('GATEWAY:10.127',大写(StringReplace(Memo1.lines[ii],'',[rfReplaceAll]))>0然后
@moskito-添加得很好。您好,非常感谢@Micheal Vicent它工作得很好它的捕获我如何删除网关:word并只保留
10.127的结果。
@JkRobbin您认为这将如何完成?您真的放弃了自己解决这个问题的所有希望吗?这是简单的文本处理。不要问新问题评论中的问题。为什么不找一本教程、教科书甚至文档呢?你肯定不是第一个想提取子字符串的人吗?你确定你自己无法解决这个问题吗?我知道我听起来很苛刻,但你只是不够努力,而且这个网站不是为了教新手如何做基本任务。请是的。我们来这里是为了建立一个对未来访问者有用的问答帖子资源。只是为了完整性:你不能信任创建和捕获的文本中的空格或符号!这里不是100%,而是更好的:
if pos('GATEWAY:10.127',大写(StringReplace(Memo1.lines[ii],'',[rfReplaceAll]))>0然后
@moskito-不错的添加。问候,