データの保存について

解決


altlegend  2011-03-16 07:50:35  No: 40262

pasteの件ではありがとうございました。
すみません、また質問させてください。

自作メモ帳で、stringlistを使って保存したデータを次のプログラムで読み込んだときに読み込めないという問題が出ました。

  AssignFile(F, FileName); Reset(F);
  i:=0;
  repeat
    i:=i+1;   
    readln(F,InBuff); 
    a[i]:=Inbuff;
  until eof(f);

おかしいのは、「名前を付けて保存」したものは読み込めないのに、「上書き保存」したものは読み込める点です。
「名前を付けて保存」した後すぐに「上書き保存」したものは読み込めるんです。

  if FileName2<>'' then
  begin      //上書き保存です
      StrL := TStringList.Create;
      try
        StrL.Text := RichEdit1.Lines.Text;
        StrL.SaveToFile(FileName2);
      finally
        StrL.Free;
      end;
      FormFiler.Caption:='FilerV2-----'+FileName2;
  end
  else
  begin    //名前をつけて保存です
    if SaveDialog1.Execute then
    begin
      FileName2:=SaveDialog1.FileName;
      StrL := TStringList.Create;
      try
        StrL.Text := RichEdit1.Lines.Text;
        StrL.SaveToFile(FileName2);
      finally
        StrL.Free;
      end;
      FormFiler.Caption:='FilerV2---'+FileName2;
    end;
  end;

「名前を付けて保存」したものを読み込みたいんですが、どうしたらいいでしょうか。
よろしく、お願いします。


igy  2011-03-16 08:08:46  No: 40263

>読み込めない

というのは、具体的には、どのような現象なのでしょうか?
(「ファイルが見つからない」などのエラーが表示?とか・・)


  2011-03-16 16:01:35  No: 40264

よく分からんが、開いたファイルは閉じないのかい?


altlegend  2011-03-18 07:00:25  No: 40265

お世話になります。

delphi2009で両方ともコンパイルしています。
ファイルはきちんとできます。
delphi2009でコンパイルしoD・作メモ帳では読み込めます。
excelでも読み込めます。

しかし、delphi7でコンパイルしたメモ帳では読み込めません。
ただし、delphi7でコンパイルしoD・作メモ帳はricheditに直接loadfromfileしています。
delphi2009でコンパイルした最初に書いたプログラムでも読み込めません。

delphi2009でコンパイルしoD・作メモ帳で「12345]を保存すると
delphi7でコンパイルしoD・作メモ帳では「1]になります。
次にdelphi2009でコンパイルしoD・作メモ帳でで上書き保存すると、
delphi7でコンパイルしoD・作メモ帳で「12345」と読み込みます。

  AssignFile(F, FileName); Reset(F);
  i:=0;
  repeat
    i:=i+1;   
    readln(F,InBuff); 
    a[i]:=Inbuff;
  until eof(f);
このプログラムは膨大なプログラムの中に組み込んでいるもので変更したくないんです。
delphi2009でコンパイルしoD・作メモ帳を直したいと思ってます。

よろしくお願いします。


igy  2011-03-18 08:01:05  No: 40266

あ さんも書かれてますが、
CloseFile 関数は使っていますか?

また、
>    a[i]:=Inbuff;
の i は、1 から格納していますが、
0 から格納しなくてよいのですか?


altlegend  2011-03-19 16:47:45  No: 40267

どうもありがとうございました。

すみません。
私の勘違いで、名前をつけて保存では
if SaveDialog1.Execute then

with SaveDialog do
 if execute then
としていました。

delphi2009ではこれがいけないみたいで、
if SaveDialog1.Execute then
に直すと、うまくいくようになりました。

また、よろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加