Discussion:
[Lazarus] Assign not working on text files
Stefanos Beligiannis
2014-11-09 14:25:07 UTC
Permalink
If somebody has met this problem please advise.
----------------code var    f : text;
    fn,nam : string;
  
begin
     fn:=Edit2.Caption;
     {$I-}
     assign(f,fn);
     if (not FileExists(fn)) then Rewrite(f) else Append(f);
     {$I+}----------------- end codecompiler error report-----------------  startk2u.pas(92,18) Error: Wrong number of parameters specified for call to "Assign"k2u.pas(93,44) Hint: Local variable "f" does not seem to be initialized----------------- end
use Lazarus # 1.2.6
Bart
2014-11-09 14:38:14 UTC
Permalink
Post by Stefanos Beligiannis
If somebody has met this problem please advise.
----------------code var f : text;
fn,nam : string;
begin
fn:=Edit2.Caption;
{$I-}
assign(f,fn);
if (not FileExists(fn)) then Rewrite(f) else Append(f);
{$I+}----------------- end codecompiler error
report----------------- startk2u.pas(92,18) Error: Wrong number of
parameters specified for call to "Assign"k2u.pas(93,44) Hint: Local variable
"f" does not seem to be initialized----------------- end
use Lazarus # 1.2.6
Use TextFile instead of Text, use AssignFile instead of Assign.
Alternatively prepend both Text and Assign with system. (note the dot!).

Bart

--
Michael Van Canneyt
2014-11-09 14:50:50 UTC
Permalink
Post by Bart
Post by Stefanos Beligiannis
If somebody has met this problem please advise.
----------------code var f : text;
fn,nam : string;
begin
fn:=Edit2.Caption;
{$I-}
assign(f,fn);
if (not FileExists(fn)) then Rewrite(f) else Append(f);
{$I+}----------------- end codecompiler error
report----------------- startk2u.pas(92,18) Error: Wrong number of
parameters specified for call to "Assign"k2u.pas(93,44) Hint: Local variable
"f" does not seem to be initialized----------------- end
use Lazarus # 1.2.6
Use TextFile instead of Text, use AssignFile instead of Assign.
Alternatively prepend both Text and Assign with system. (note the dot!).
Explanation:

The code most likely is inside a TForm. TForm descends from TPersistent.
TPersistent has a .Assign() method, which is totally unrelated to the Assign() of the system unit.

When compiling your code, the compiler needs to know which Assign() to use.
It finds first the TPersistent.Assign, stops searching and gives an error
because it has different arguments from the system version.

By prepending your "text" and "assign" with system: system.text, system.assign,
the compiler does not search in TPersistent and finds the correct routines.

Michael.

--

Continue reading on narkive:
Loading...