私はこのコードユニットを持っています:(私はWin XP sp 3上でDelphi 7を実行します)。TFileStreamは非常に奇妙な動作をします
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
CONST
EOL = #13#10;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
Procedure StringToStream(Ofile : TFileStream; Const StrValue : String);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1 : TForm1;
Curdir : String;
Ofile : TFileStream;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Ofile := TFileStream.Create(curdir + '\TESTfil.HTML', fmCreate,fmsharedenynone);
try
StringToStream(Ofile, '<HTML><BODY> </BODY></HTML>' + EOL);
// StringToStream(Ofile, '</BODY></HTML>' + EOL);
finally
Ofile.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Curdir := ExtractFileDir(Application.ExeName);
end;
Procedure Tform1.StringToStream(Ofile : TFileStream; Const StrValue : String);
BEGIN
IF length(StrValue) > 0 then
Ofile.Write(StrValue,length(StrValue));
Ofile.Write('testpunkt',9);
END;
そして、このユニットの出力は、次のとおりです。
"28 non printable characters" + "\testpunkt"
私は、文字列「CONST」を作ることを試みました。 - >私はPCHARのでそれを試してみました
同じエラーが - 私はidGlobal.WriteStringtoStream()を取得するためにINDY9にINDY7を変更しているエラーの多く...(ほとんどの構文エラー)
を得た - しかし、それを特にINDY-9はWriteStringToStreamをサポートしていません。
私は間違っていますか?
無関係な注記では、ユニットではなく、フォームクラス内で 'Curdir'と' Ofile'を真剣に宣言する必要があります。 'StringToStream'は' private'の上で宣言されるべきではなく 'プライベート」または「パブリック」のいずれかを選択します。 'private'の上のスペースは、通常、IDEによって制御されます。 –
@ジェリードッジ:あなたは大丈夫です。このユニットは非常に時期尚早の例に過ぎませんでした。そして、私はそれを実行させなかったので、私はコードを短縮するためのいくつかのショートカットを行いました。私はあなたが提案した通りに私が行う本当のコードです。アドバイスをいただきありがとうございます。 –