0

この質問のフォローアップとして....

今、私はユーザー j_random_hacker によるコメントでその質問に対する答えを見つけました。ここで、Windows は 8.3 ファイル命名標準に従います。つまり、turbo c は、名前の長さが 8 文字、拡張子が 3 文字のファイルのみを読み取ることができます。そのため、Windows は、8.3 命名基準に従っていないファイルに別の名前を付けます。私の場合と同様に、WindowsはHIBDS~1.TTCの実際のファイル名にHI.TTCNを与えていました。

今私の問題は、以下に示すように、実行時にそのファイル名を引数として取りたいことです

glc hi.ttcn

ここで、glc はコーディング ガイドライン違反をチェックする .exe ファイルで、hi.ttcn は実際にチェックする TTCN ファイルです。したがって、ここでの問題は、上記のウィンドウが hi.ttcn に別の名前を付けているため、同じ引数文字列「hi.ttcn」を与えているため、「ファイル名が存在しません」と言ってプログラムがそのファイルを開くことができないことです開く。では、指定された引数文字列の実行時にウィンドウに割り当てられたファイル名を取得するにはどうすればよいですか (「HI.TTCN」が指定されたときに文字列「HIBDS~1.TTC」を取得することを意味します)。

4

3 に答える 3

3

よし、呼び出す必要がある Win32 関数を説明しているページは次のとおりです。

GetShortPathName 関数

プログラムの先頭でこれをコンパイルする必要があり、おそらくこれをそのような古いコンパイラでコンパイルするには、さらに多くのフープをジャンプする必要があり#include <windows.h>ます (おそらく、Turbo C には Windows ヘッダーが同梱されていませんでしたか?) 頑張ってください!

于 2009-02-05T11:16:56.823 に答える
2

これは可能だと思いますが、厄介なWin32 API呼び出しを詳しく調べる必要があるため、注意が必要です。最新のコンパイラを使用して単純に再コンパイルする方がはるかに簡単です。これができない理由はありますか?

長いファイル名で問題が発生しない2つの無料の高品質C/C++コンパイラへのリンクは次のとおりです。MicrosoftVisualC++ Express Edition ; MinGW

于 2009-02-05T10:51:06.283 に答える
1

dir /xコマンドラインから短いファイル名を取得するために使用することもできます

于 2009-02-05T13:12:30.790 に答える