狠好笑的问题,好久都没有找到答案!关于字符串的问题 !

时间:2022-10-18 14:39:54
例:AnsiString  Sy="int i=10";

试着请问:怎么将 SY 的内容当成一个C++ BUILDER 的一条语句呢?

int   i=10;

:)  求助!!

20 个解决方案

#1


学习@__@

#2


如果只针对Sy="int i=10";那倒简单,分析后转换。
如果要识别所有可能的C语句,太麻烦,我不会。

#3


C++BUILDER又不是解释性的语言,那能这样。
你的思维来自古老的Foxpro

#4


C++BUILDER不是解释型,是编译型的编译器!所以!如果当成一条语句,那个用宏了!

#5


这是完全不可能实现的事情!
字符串在编译时不编译为机器指令,程序在执行时只是执行机器指令,不可能再给编译了。好好学一下计算机基础吧。
要做到你说的有两种可以实现的方法:
1、下一代人工智能电脑应该可以实现;
2、采用if判断语句来执行不同的语句。

#6


把你们给难住了吧 !  ,:)

#7


毫无意义的问题

#8


很简单:
  1。 swicth(Sy)加case和break就可以了!
  2。 把Sy解析出来,在查找相应的语句!

#9


没办法,也没必要!!

#10


有这个必要么?我觉得是没有什么意义的问题!

#11


我想有一种办法也许可以,不过没试过只是作为一种参考:
使用黑客常用的缓冲区溢出法。通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到目的。这个技术其实是很成熟的一种方法,完全可以实现的。
1. 在程序的地址空间里安排适当的代码。 
2. 通过适当的初始化寄存器和内存,让程序跳转到安排的地址空间执行。比如你上面写的那个字符串 

#12


学习。

#13


haha,tofool!!

#14


这还不简单,考

喂,干什么呢,先收起你手里的鸡蛋!
--------------------------------------------------------------------

想一想,如果你的程序中有个模块是c++builder语言的编译程序,在你的程序中调用编译这个string,后jump到相应的*pointer不就行了。

--------------------------------------------------------------------

当然,肯定有其他的替代方法,不必这么复杂,是个难题,应该好好想想:)

--------------------------------------------------------------------

谁,谁的馒头,乱扔东西是不对的,馒头是粮食,怎么能乱扔呢?幸好砸到的是我,否则,砸到花花草草了,多不好...............................

#15


不知道,没有搞过

#16


把字符串“int i=10”保存在一个文件(如:MyCpp.cpp)中
在MyCpp.cpp把它作成一个Dll的函数,然后用CBuilder编译
链接该MyCpp.cpp,最后在程序中动态调用该函数(如:MyCpp.Dll
中的MyFunction函数).
仅供参考。如果实现了的话可以作成一个控件使用了!

#17


是否可以考虑用宏?

#18


如果要做的话,只能通过程序人工解释了,用编译原理;

#19


谢谢TangZH001() ,启发了我的一个想法

#20


在你的程序里集成一个编译器不就得了:)

#1


学习@__@

#2


如果只针对Sy="int i=10";那倒简单,分析后转换。
如果要识别所有可能的C语句,太麻烦,我不会。

#3


C++BUILDER又不是解释性的语言,那能这样。
你的思维来自古老的Foxpro

#4


C++BUILDER不是解释型,是编译型的编译器!所以!如果当成一条语句,那个用宏了!

#5


这是完全不可能实现的事情!
字符串在编译时不编译为机器指令,程序在执行时只是执行机器指令,不可能再给编译了。好好学一下计算机基础吧。
要做到你说的有两种可以实现的方法:
1、下一代人工智能电脑应该可以实现;
2、采用if判断语句来执行不同的语句。

#6


把你们给难住了吧 !  ,:)

#7


毫无意义的问题

#8


很简单:
  1。 swicth(Sy)加case和break就可以了!
  2。 把Sy解析出来,在查找相应的语句!

#9


没办法,也没必要!!

#10


有这个必要么?我觉得是没有什么意义的问题!

#11


我想有一种办法也许可以,不过没试过只是作为一种参考:
使用黑客常用的缓冲区溢出法。通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到目的。这个技术其实是很成熟的一种方法,完全可以实现的。
1. 在程序的地址空间里安排适当的代码。 
2. 通过适当的初始化寄存器和内存,让程序跳转到安排的地址空间执行。比如你上面写的那个字符串 

#12


学习。

#13


haha,tofool!!

#14


这还不简单,考

喂,干什么呢,先收起你手里的鸡蛋!
--------------------------------------------------------------------

想一想,如果你的程序中有个模块是c++builder语言的编译程序,在你的程序中调用编译这个string,后jump到相应的*pointer不就行了。

--------------------------------------------------------------------

当然,肯定有其他的替代方法,不必这么复杂,是个难题,应该好好想想:)

--------------------------------------------------------------------

谁,谁的馒头,乱扔东西是不对的,馒头是粮食,怎么能乱扔呢?幸好砸到的是我,否则,砸到花花草草了,多不好...............................

#15


不知道,没有搞过

#16


把字符串“int i=10”保存在一个文件(如:MyCpp.cpp)中
在MyCpp.cpp把它作成一个Dll的函数,然后用CBuilder编译
链接该MyCpp.cpp,最后在程序中动态调用该函数(如:MyCpp.Dll
中的MyFunction函数).
仅供参考。如果实现了的话可以作成一个控件使用了!

#17


是否可以考虑用宏?

#18


如果要做的话,只能通过程序人工解释了,用编译原理;

#19


谢谢TangZH001() ,启发了我的一个想法

#20


在你的程序里集成一个编译器不就得了:)

#21