社区
Windows SDK/API
帖子详情
急救:关于delphi 6中的重定向问题
先生
2003-04-26 09:43:55
把tasm编译所产生的信息输入到screen.txt中怎么办??????
我在DELPHI 6 中试了,加了重定向后,tasm不能正常编译。去掉>screen.txt tasm倒能够正常编译。我的语句如下:
winexec('tasm.exe new.asm >screen.txt',9);
{tasm.exe ,new.asm,screen.txt 都在当前目录下}
高手们,帮帮忙,关系到我毕业呀!
...全文
82
10
打赏
收藏
急救:关于delphi 6中的重定向问题
把tasm编译所产生的信息输入到screen.txt中怎么办?????? 我在DELPHI 6 中试了,加了重定向后,tasm不能正常编译。去掉>screen.txt tasm倒能够正常编译。我的语句如下: winexec('tasm.exe new.asm >screen.txt',9); {tasm.exe ,new.asm,screen.txt 都在当前目录下} 高手们,帮帮忙,关系到我毕业呀!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
短歌如风
2003-04-27
打赏
举报
回复
补充:如果程序运行时需要从标准输入输入数据,可以对标准输入也进行重定向:
StInfo.hStdError := StInfo.hStdOutput;
stInfo.hStdIn := hStd;
FlushConsoleInputBuffer(hStd);
然后用WriteFile(hPipe,...)提供输入数据。
在读写管道时读出的数据一定会是另一端写入的数据,用它进行双向数据传递不会产生干扰。
ikumei
2003-04-26
打赏
举报
回复
还有一种取巧的办法.那就是-------用程序在当前目录下新建立一个临时批处理文件如:temp.bat
然后将 'tasm.exe new.asm >screen.txt'写如这个临时批处理
然后用winexec执行这个临时批处理
hsgrass37301
2003-04-26
打赏
举报
回复
在Win2000下,,我试过,,肯定得:
WinExec('cmd.exe /c dir > a.txt',SW_HIDE);
honkily
2003-04-26
打赏
举报
回复
up
先生
2003-04-26
打赏
举报
回复
高手,我一定给你多顶两下!~~~~~~~~~~
短歌如风
2003-04-26
打赏
举报
回复
hsgrass37301(零点)的方法也是一种可行的简单处理办法。不过:
1,不要用WinExec,这个函数是个过时函数,它还存在是为了兼容以前的16位代码。应该改用CreateProcess。如果觉得CreateProcess太麻烦,应该改用ShellAPI中的ShellExecute或ShellExecuteEx。
2,由于Windows系统是多任务的,当你调用一个程序时它不会等到这个程序结束才返回。而如果你想知道执行结果就必须知道这个程序什么时候结束,这样你就必须知道该程序的进程句柄,然后调用WaitForSingleObject(进程句柄).要想得到该程序的进程句柄,就必须用CreateProcess或ShellExecuteEx(这时ShellExecute不行了)运行该程序。
3,使用cmd.exe实现要考虑很多情况。比如搜索路径、在Windows98下的处理等。
短歌如风
2003-04-26
打赏
举报
回复
如果只是为了把输出内容进行处理,而不是为了保存到指定文件中,可以不创建文件而改用管道对象,可以避免磁盘操作这种容易发生异常的动作:
var
StInfo:TStartupInfo;
PrInfo:TProcessInformation;
SecAttr: TSecurityAttributes;
hStd: THandle;
PipeName: String;
Strm: TStream;
hPipe: THandle;
begin
PipeName := Format('\\.\pipe\InPipe%x_%x',[GetCurrentProcessId,Round(Time*24*3600)]);
hPipe := CreateNamedPipe(PChar(PipeName), PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE or PIPE_NOWAIT,
PIPE_UNLIMITED_INSTANCES, 4096, 4096,100,nil);
SecAttr.nLength := Sizeof(SecAttr);
SecAttr.lpSecurityDescriptor := nil;
SecAttr.bInheritHandle := True;
ZeroMemory(@StInfo,Sizeof(StInfo));
StInfo.cb := Sizeof(StInfo);
StInfo.dwFlags := STARTF_USESTDHANDLES;
hStd := CreateFile(
PChar(PipeName),
GENERIC_WRITE or GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,
@SecAttr,
OPEN_EXISTING,
0,0);
StInfo.hStdOutput := hStd;
StInfo.hStdError := StInfo.hStdOutput;
FlushConsoleInputBuffer(hStd);
CreateProcess('c:\borland\bcc55\bin\bcc32.exe', nil, nil, nil, True,
CREATE_NO_WINDOW
, nil, nil,StInfo,PrInfo);
WaitforSingleObject(prInfo.hProcess, INFINITE);
CloseHandle(hStd);
Strm := THandleStream.Create(hPipe);
Memo1.Lines.LoadFromStream(Strm);
Strm.Free;
CloseHandle(hPipe);
end;
短歌如风
2003-04-26
打赏
举报
回复
const
FileName = 'c:\output.txt';
var
StInfo:TStartupInfo;
PrInfo:TProcessInformation;
SecAttr: TSecurityAttributes;
hStd: THandle;
begin
SecAttr.nLength := Sizeof(SecAttr);
SecAttr.lpSecurityDescriptor := nil;
SecAttr.bInheritHandle := True;
ZeroMemory(@StInfo,Sizeof(StInfo));
StInfo.cb := Sizeof(StInfo);
StInfo.dwFlags := STARTF_USESTDHANDLES;
hStd := CreateFile(
PChar(FileName),
GENERIC_WRITE or GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,
@SecAttr,
OPEN_ALWAYS,//如果希望每次都重新创建则改为CREATE_ALWAYS
0,0);
StInfo.hStdOutput := hStd;
StInfo.hStdError := StInfo.hStdOutput;
FlushConsoleInputBuffer(hStd);
CreateProcess('c:\borland\bcc55\bin\bcc32.exe', nil, nil, nil, True,
CREATE_NO_WINDOW
, nil, nil,StInfo,PrInfo);
WaitforSingleObject(prInfo.hProcess, INFINITE);
CloseHandle(hStd);
Memo1.Lines.LoadFromFile(FileName);
end;
短歌如风
2003-04-26
打赏
举报
回复
我做过一个重定向的,不过我是重定向到管道,并且又起动了一个线程去监视子进程的退出(因为我是调用cmd.exe,需要在主线程中接受参数并传递给子进程),比较复杂。等我改一改再贴上来。
先生
2003-04-26
打赏
举报
回复
谢谢各位指教。请多多帮忙!
高校技术转移办公室人员如何提升成果转化效率?.docx
高校技术转移办公室人员如何提升成果转化效率?
核心复现模拟风电不确定性-拉丁超立方抽样生成及缩减场景研究(Matlab代码)
内容概要:本文聚焦风电出力的不确定性
问题
,采用拉丁超立方抽样(Latin Hypercube Sampling, LHS)方法生成具有统计代表性的风电出力初始场景集,有效克服传统蒙特卡洛抽样存在的样本冗余与收敛速度慢的缺陷。为进一步降低场景数量以提升电力系统优化调度的计算效率,研究结合K-means聚类、快速前向选择等场景缩减技术,对生成的高维场景进行聚合与概率修正,保留最具代表性的典型场景及其对应概率分布。整个建模流程在Matlab平台上编程实现,形成一套完整的“抽样—生成—缩减—验证”的不确定性建模框架,为含高比例风电的电力系统提供高质量、低冗余的输入场景集,显著增强随机优化、鲁棒优化等模型的求解效率与工程实用性。; 适合人群:具备电力系统分析、概率统计基础及Matlab编程能力,从事新能源并网、电力系统优化调度、不确定性建模与风险评估等方向的科研人员、工程技术人员及研究生。; 使用场景及目标:①应用于风电主导的电力系统随机优化调度、机会约束规划、鲁棒经济调度等场景,提升模型对不确定性的刻画能力;②帮助研究者深入掌握拉丁超立方抽样与场景缩减的核心原理与实现方法,构建高精度的不确定性输入模型;③为复杂电力系统仿真提供经过科学约简的典型场景集,平衡计算精度与效率,支撑实际工程决策。; 阅读建议:建议读者结合提供的Matlab代码逐模块调试与运行,重点理解LHS在多维空间
中
的分层抽样机制、场景距离度量方式及聚类缩减过程
中
的概率守恒原则,关注缩减前后场景集的分布保真性与计算效率提升效果,以全面掌握风电不确定性建模的关键技术路径。
产业园区运营负责人如何利用区域产业知识图谱提升招商精准度?_1.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
飞思卡尔智能车比赛源码-下载即用.zip
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 全国范围内的飞思卡尔智能车竞赛是一项专注于在校大学生的科技创新项目,其目的在于通过设计并制造一辆能够执行特定任务的智能车辆,以增强学生的创新思维和工程实践技能。在此过程
中
,参赛团队需要开发相应的控制程序代码,用以确保智能车的平稳运作以及高级功能,例如路径选择、障碍物躲避等。本文将详细分析飞思卡尔智能车竞赛程序代码
中
常见的几个核心信息技术范畴:PID控制方法、智能控制方法、图像识别方法以及超声波测距技术。 PID控制方法作为智能车控制系统的核心组成部分,通过模仿人类的驾驶行为,并融合传感器提供的实时数据,对车辆的运动进行精确调控。在智能车竞赛
中
,PID控制通常被应用于处理车速、方向和加速度等多个控制方面。一个标准的PID控制系统主要由三个关键部分构成:比例部分(P)、积分部分(I)和微分部分(D)。比例部分负责减少误差,积分部分旨在消除稳态误差,而微分部分则预测误差的发展趋势,从而实现快速响应变化。通过调整PID参数,可以使智能车在赛道上保持稳定,并能迅速适应赛道条件的变化。 智能控制方法的实现是智能车在复杂环境
中
有效运行的关键。智能控制往往需要整合机器学习和人工智能技术,例如模糊逻辑、神经网络或遗传算法等。在智能车竞赛场景下,车辆需要依据传感器收集的环境数据,完成对路线的识别、障碍物的规避等任务。路径规划方法能够协助车辆挑选最优的行驶路线,而避障策略则保障车辆能够安全地绕开前方的障碍物。此外,智能车还应具备一定的学习功能,能够适应环境的变化,并作出相应的调整。 图像识别方法对于智能车对赛道的感知能力具有决定性作用。车辆通常配备摄像头或其他视觉传感器来采集图像信息。借助图像处理...
CAD+说明书步进电机指数规律升降速的单片机控制系统设计
CAD+说明书步进电机指数规律升降速的单片机控制系统设计
Windows SDK/API
1,184
社区成员
22,326
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章