これは奇妙な質問です。私はintesively出力生成のためにGotoXY関数を使用するパスカルソースが、今私は出力をコンソールからファイルにリダイレクトする必要があります。何か案は?pascal crt出力のリダイレクト
0
A
答えて
1
最後に完了しました。
uses
Windows;
type
TAttachConsole = function (dwProcessId: DWORD): LongBOOL stdcall;
var
AttachConsole: TAttachConsole;
mProcessID, Hcwnd: Cardinal;
procedure Attach;
begin
@AttachConsole := GetProcAddress(GetModuleHandle('kernel32.dll'), 'AttachConsole');
GetWindowThreadProcessId(FindWindow(nil,'C:\WINDOWS\system32\cmd.exe'),@mProcessID);
AttachConsole(mProcessID);
end;
function get(x, y: byte) : string;
const
SMB = 1;
var
chRead: Cardinal;
BufInfo: _CONSOLE_SCREEN_BUFFER_INFO;
lpCh : PChar;
Coord: _COORD;
begin
Hcwnd:=GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo (Hcwnd, BufInfo);
GetMem(lpCh,SMB);
Coord.X:=x;
Coord.Y:=y;
lpch := '';
ReadConsoleOutputCharacter(Hcwnd,lpCh,SMB,Coord,chRead);
get:=string(lpCh^);
end;
var x, y : integer;
buf : array[0..24] of string;
begin
for y := 0 to 24 do
begin
for x := 0 to 79 do
buf[y] := buf[y] + get(x,y);
end;
for y := 0 to 24 do
writeln(buf[y]);
end.
0
私はTurbo Pascalの機能について話していると思いますが、C/C++で使用できる同様の名前の関数ではありません。 (機能は非常に似ていますが)
残念ながら、Writeln
の画面とファイルのバージョンが異なります。GotoXY
は予約語です。私はあなたの最善の策は、内部的に画面またはグローバルフラグに基づいてファイルに指示する共通の関数呼び出しで入出力呼び出しを置き換えることだと思う。または、個別のIF
ステートメントを挿入して、I/Oがどこでも使用されるロジックを選択することもできます。
関連する問題
- 1. 入力と出力のリダイレクト
- 2. QtScript出力リダイレクト
- 3. テスト出力のリダイレクト
- 4. Turbo Pascal "crt"ユニットの名前は何を表していますか?
- 5. リダイレクトwgetヘッダー出力
- 6. Pythonの出力ファイルのリダイレクト
- 7. Windows用Turbo Pascal:出力をクリップボードにコピーしますか?
- 8. Pascal Bubble Sort
- 9. docker-execの出力をリダイレクト
- 10. Linux端末の出力リダイレクト
- 11. libcレベルで出力をリダイレクト
- 12. PSEXEC出力をローカルファイルにリダイレクト
- 13. ctypesで標準出力リダイレクト
- 14. 出力をイベントログにリダイレクト
- 15. 出力をリダイレクトするシェルスクリプト
- 16. Node.js:リダイレクト.profiler()と.logging()出力
- 17. Ant、javaクラス出力リダイレクト
- 18. オーディオ出力をフォーンスピーカーにリダイレクトし、マイク入力をヘッドフォンにリダイレクト
- 19. ソケットへのVxWorksシェル出力のリダイレクト
- 20. Bashの子スクリプトの出力をリダイレクト
- 21. pythonでシステムコールの出力をリダイレクト
- 22. 一時変数Cmdエラーコード出力のリダイレクト
- 23. grepの出力をファイルにリダイレクト
- 24. PsExec v 1.98出力リダイレクトの問題
- 25. Webページ用の出力をファイルにリダイレクト
- 26. Bashで出力をリダイレクトするには
- 27. 関数出力を/ dev/nullにリダイレクト
- 28. サブプロセスを使ってシェル出力をリダイレクト
- 29. "screen"コマンドによる出力リダイレクト
- 30. 出力をリダイレクトする方法は?
はい、約tp func。フォーマットはGotoXYなしで失われます。代わりにこのhttp://msdn.microsoft.com/en-us/library/windows/desktop/ms684969(v=vs.85).aspx関数を試してみてください。 – yuyoyuppe
ファイルに書き込むときにどうやって "フォーマット"しますか?線形の「プレゼンテーション」には制約があります。 –
私は知っていますが、GotoXYはコンソール画面でこの制限を解除します。以下の私のソリューションを参照してください – yuyoyuppe