くじけそう・・・

解決


チャトラ  2002-03-12 02:03:46  No: 652  IP: [192.*.*.*]

こんにちは、やっとDelphiの参考書も見つけ流し読みをしてみて、
「さて、コンソールアプリケーションとやらでも作ってみるか!」と思いがんばってみました。
しか〜し!あらまっ、エラーだらけ!!やっとここまで減らしましたがこの先進めません。誰かシロウトでも相手をしてくださる方、教えてください。
内容:テキストを読み込んで128bで区切るという単純なものです(^_^;)
program chng;

uses
  SysUtils;
{$APPTYPE CONSOLE}

  var
     F1 : textfile;
     F2 : textfile;
     instr : string;
     outstr : string;
begin
  begin
    outstr := '';
    assignfile( F1,'aaa.txt' );
    reset(F1);
    try
      while not eof(F1) do
      begin
        readln(F1,instr);
        while length(instr)>0 do
        begin
          outstr := outstr + leftstr(instr,128) + #13#10;
          instr := delete(instr,1,128);
        end;
      end;
    finally
      closefile(F1);
  end;
  begin
    assignfile(F2,'bbb.txt');
    rewrite(F2);
    writeln(F2,outstr);
    closefile(F2);
  end;
end.
[エラー] chng.dpr(23): 未定義の識別子 : 'leftstr'
[エラー] chng.dpr(24): 'String' と '関数、型無しポインタまたは型無しパラメータ' には互換性がありません
[エラー] chng.dpr(36): レコード、オブジェクトまたはクラスのいずれかが必要です
[エラー] chng.dpr(38): 'END' が必要な場所に ファイルの末尾 があります

win98se,Delphi6personal

leftstr()って使えないんですか?(んなわけないか...)
ん?rewrite()ってデフォルトのrecサイズは128・・・?
もしかしてそのまま移し変えればできちゃうんですか?
くだらない質問ですいません。

編集 削除
スパーク  2002-03-12 07:57:28  No: 653  IP: [192.*.*.*]

>outstr := outstr + leftstr(instr,128) + #13#10;
>instr := delete(instr,1,128);

outstr := outstr + Copy(instr,1,128) + #13#10;
Delete(instr,1,128);

手続き(procedure)…式の中で使えない。
関数(function)  …式の中で使える。

ガンバ(^.^)

編集 削除
チャトラ  2002-03-12 22:12:30  No: 654  IP: [192.*.*.*]

スパークさん、レス有難うございました。
なるほど、言われてみればそうですよねぇ〜(^_^;)
納得しました。
でも、36、38行目のエラーはそのまま残ってます。
だいたい36行目で終わりなのにどうしてですか?
END.の後には空白もないしまったくわかりません。
誰かヒントだけでもよろしくお願いします。
あっ、プログラム貼り付けたら見づらくなっちゃいました。
すいません。

編集 削除
チャトラ  2002-03-12 22:19:39  No: 655  IP: [192.*.*.*]

わっかりました!
とりあえず解決です。

編集 削除
スパーク  2002-03-12 23:30:07  No: 656  IP: [192.*.*.*]

解決済みでしたが、一応蛇足の補足を(^^ゞ
>でも、36、38行目のエラーはそのまま残ってます。
begin、end の対応が間違ってたんでエラーになったんでしょうね。
まとめると以下のような…
(見やすいように、先頭に全角スペースを入れました)
--------------------------
begin        //これは不要
begin
  outstr := '';
  assignfile( F1,'aaa.txt' );
  reset(F1);
  try
    while not eof(F1) do
    begin
      readln(F1,instr);
      while length(instr)>0 do
      begin
        outstr := outstr + leftstr(instr,128) + #13#10; // LeftStr関数は、usesに StrUtilsを追加すれば使える
        instr := delete(instr,1,128);  //Delete手続きは式で使えない。usesにSystemを追加する必要あり
      end;
    end;
  finally
    closefile(F1);
  end;
  begin     //これは不要
    assignfile(F2,'bbb.txt');
    rewrite(F2);
    writeln(F2,outstr);
    closefile(F2);     //これもtry..finally処理を入れた方が良い
  end;      //これは不要
end;        //これが足りない

end.
-------------------------

編集 削除