全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:8538
推到 Plurk!
推到 Facebook!

映射Delphi寫的console 程式

缺席
bluesum
一般會員


發表:3
回覆:11
積分:2
註冊:2009-05-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-05-21 20:06:28 IP:203.83.xxx.xxx 訂閱
各位好

我用JCL 的TJvCreateProcess 不能顯示以下Delph寫i的console 程式(看不到'type something')
大家有沒有辦法解決? 多謝先
[code delphi]
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var s:string;
begin
writeln('type something');
readln(s);
writeln('You typed ' s);
readln(s);
end.
[/code]
AndrewK
高階會員


發表:6
回覆:151
積分:161
註冊:2006-10-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-05-21 21:45:40 IP:60.250.xxx.xxx 未訂閱
Hello 
你的 JCL 的TJvCreateProcess 的 Version 是多少??
試試看 rev 1.29 的版本
------
Just Do It
-------------------------
其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。
編輯記錄
AndrewK 重新編輯於 2009-05-21 21:46:09, 註解 無‧
bluesum
一般會員


發表:3
回覆:11
積分:2
註冊:2009-05-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-05-21 23:25:12 IP:203.83.xxx.xxx 訂閱

===================引 用 AndrewK 文 章===================
Hello
你的 JCL 的TJvCreateProcess 的 Version 是多少??
試試看 rev 1.29 的版本

怎樣查看 Version ?
請給我 rev 1.29 綱址
Thanks
AndrewK
高階會員


發表:6
回覆:151
積分:161
註冊:2006-10-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-05-22 00:03:25 IP:60.250.xxx.xxx 未訂閱
當你下載 Jedi Code Library 時,其中就會註明你下載的 version 為何
你可以上網查詢,會有很多相關的資料
若不確定你手上的版本為何
倒是建議可以下載新的版本來試試看
祝你好運~~
===================引 用 bluesum 文 章===================
怎樣查看 Version ?
請給我 rev 1.29 綱址
Thanks
------
Just Do It
-------------------------
其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。
編輯記錄
AndrewK 重新編輯於 2009-05-22 13:02:52, 註解 無‧
bluesum
一般會員


發表:3
回覆:11
積分:2
註冊:2009-05-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-05-22 07:31:34 IP:203.83.xxx.xxx 訂閱

===================引 用 AndrewK 文 章===================
尚你下載 Jedi Code Library 時,其中就會註明你下載的 version 為何
你可以上網查詢,會有很多相關的資料
若不確定你手上的版本為何
但是建議可以下載新的版本來試試看
祝你好運~~

我重新安裝 jcl 1.104.1.3248 和JVCL 3.36 也不行 (我正在用Delphi 2009 Trial)
可否給我 JCL 1.29 和相關 JVCL 綱址的試試 ?
AndrewK
高階會員


發表:6
回覆:151
積分:161
註冊:2006-10-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-05-22 14:04:40 IP:60.250.xxx.xxx 未訂閱
Hello 

其實你用 3.x 版本
我想~~
原來 JCL 於 1.x 的 bug 也同樣修正了

如果你是使用 Delphi 2009 的試用版
建議先使用以下版本
  • Delphi 5
  • Delphi 6
  • Delphi 7
  • Delphi 2005 (Win32 only)
  • Borland Developer Studio 2006 (Delphi Win 32 and C Builder)
  • CodeGear RAD Studio 2007 (Delphi Win 32 and C Builder)
來試試看,是否運作正常,

最近行程太滿
沒什麼時間幫你測
所以以上沒測試過
資訊由官方網站 及 help 而來

------
Just Do It
-------------------------
其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。
bluesum
一般會員


發表:3
回覆:11
積分:2
註冊:2009-05-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-05-22 22:30:10 IP:203.83.xxx.xxx 訂閱
hi
===================引 用 AndrewK 文 章===================
Hello

其實你用 3.x 版本
我想~~
原來 JCL 於 1.x 的 bug 也同樣修正了

如果你是使用 Delphi 2009 的試用版
建議先使用以下版本
  • Delphi 5
  • Delphi 6
  • Delphi 7
  • Delphi 2005 (Win32 only)
  • Borland Developer Studio 2006 (Delphi Win 32 and C Builder)
  • CodeGear RAD Studio 2007 (Delphi Win 32 and C Builder)
來試試看,是否運作正常,

最近行程太滿
沒什麼時間幫你測
所以以上沒測試過
資訊由官方網站 及 help 而來

我再裝Delphi 7 ,安裝JCL 和JVCL沒有warning(delphi 2009 有warning)
仍然看不到'type something'
,那個控件只有行 "C:\WINDOWS\system32\cmd.exe" 才沒有問題
我有心理凖備你很久才幫到我
AndrewK
高階會員


發表:6
回覆:151
積分:161
註冊:2006-10-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-06-01 10:48:59 IP:60.250.xxx.xxx 未訂閱
Hello

我花了一點時間,測試了一下
發現~~
在測試下是沒有問題的
你的 os 和 delphi 的語系各是什麼呢?

測試環境:
軟體:Delphi 7
Jvcl:只安裝 JvCmp 和 JvCore

描述:
依你所述寫了一個 console 程式,
再利用 TCreateProcess Run
------
Just Do It
-------------------------
其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。
編輯記錄
AndrewK 重新編輯於 2009-06-01 10:49:56, 註解 無‧
AndrewK 重新編輯於 2009-06-01 11:03:42, 註解 無‧
bluesum
一般會員


發表:3
回覆:11
積分:2
註冊:2009-05-09

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-10-04 11:40:51 IP:203.83.xxx.xxx 訂閱
win xp sp3,Delphi 7 
可能因為我用了X版的關系
我在無意中在大陸網找到
http://download.csdn.net/source/845128
雖然仍然不能映射Delphi寫的console 程式
但是可以映射VC寫的console 程式

[code delphi]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
tmr1: TTimer;
Memo1: TMemo;
Edit1: TEdit;
Button1: TButton;
procedure tmr1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
procedure InitConsole;
procedure WriteToPipe(Pipe: THandle; Value: string);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ReadIn, WriteIn,ReadOut ,WriteOut :THandle;
implementation
{$R *.dfm}
function ReadFromPipe(Pipe: THandle): string;
var
Buffer: PChar;
ReadBuffer,BytesRead: DWord;
begin
Result := '';
if GetFileSize(Pipe, nil) = 0 then Exit;
Buffer := AllocMem(ReadBuffer 1);
repeat
BytesRead := 0;
ReadFile(Pipe, Buffer[0],
ReadBuffer, BytesRead, nil);
if BytesRead > 0 then
begin
Buffer[BytesRead] := #0;
OemToChar(Buffer, Buffer);
Result := string(Buffer);
end;
until (BytesRead < ReadBuffer);
FreeMem(Buffer);
end;

procedure TForm1.InitConsole;
var
Security: TSecurityAttributes;
start: TStartUpInfo;
ProcessInfo: TProcessInformation;
begin
with Security do
begin
nlength := SizeOf(TSecurityAttributes);
binherithandle := true;
lpsecuritydescriptor := nil;
end;
Createpipe(ReadOut, WriteOut, @Security, 0);
Createpipe(ReadIn, WriteIn, @Security, 0);
with Security do
begin
nlength := SizeOf(TSecurityAttributes);
binherithandle := true;
lpsecuritydescriptor := nil;
end;
FillChar(Start, Sizeof(Start), #0);
start.cb := SizeOf(start);
start.hStdOutput := WriteOut;
start.hStdInput := ReadIn;
start.hStdError := WriteOut;
start.dwFlags := STARTF_USESTDHANDLES STARTF_USESHOWWINDOW;
start.wShowWindow := SW_HIDE;
CreateProcess(nil, PChar('cmd'), @Security, @Security, true, NORMAL_PRIORITY_CLASS, nil, nil, start, ProcessInfo)
//cmd 可以改成其它的程式
end;

procedure TForm1.tmr1Timer(Sender: TObject);
var
s: string;
begin
s := ReadFromPipe(ReadOut);
if s <> '' then
begin
Memo1.Lines.Text := Memo1.Lines.Text s;
Memo1.SelStart := Length(Memo1.Lines.Text);
Memo1.SelLength := 0;
end;
end;
procedure TForm1.WriteToPipe(Pipe: THandle; Value: string);
var
len: integer;
BytesWrite: DWord;
Buffer: PChar;
begin
len := Length(Value) 1;
Buffer := PChar(Value #10);
WriteFile(Pipe, Buffer[0], len, BytesWrite, nil);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
InitConsole;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Trim(edit1.Text) <> '' then
begin
WriteToPipe(WriteIn, edit1.Text);
edit1.Text:='';
end;
end;
end.
[/code]


===================引 用 AndrewK 文 章===================
Hello

我花了一點時間,測試了一下
發現~~
在測試下是沒有問題的
你的 os 和 delphi 的語系各是什麼呢?

測試環境:
軟體:Delphi 7
Jvcl:只安裝 JvCmp 和 JvCore

描述:
依你所述寫了一個 console 程式,
再利用 TCreateProcess Run
系統時間:2024-11-21 16:35:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!