не компилируется

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by yfet, 22 Aug 2010.

  1. yfet

    yfet Banned

    Joined:
    11 Jul 2009
    Messages:
    48
    Likes Received:
    19
    Reputations:
    5
    procedure TForm1.toHosts(s: string; clear: boolean);
    var
    sysDir : string;
    f : TextFile;
    begin
    Setlength(sysDir,MAX_PATH);
    GetSystemDirectory(PChar(SysDir),MAX_PATH);
    if sysDir<>'' then begin
    SetLength(sysDir,pos(#0,sysDir)-1);
    sysDir:=sysDir+'\drivers\etc\hosts';
    assign(f,Sysdir);
    if clear or (not FileExists(sysDir)) then
    rewrite(f) else writeln(f,s);
    close(f);
    end;
    end;

    assign(f,Sysdir); - ошибка
    [Pascal Error] Unit1.pas(36): E2010 Incompatible types: 'TPersistent' and 'Text'


    версия делфи 2006
    как исправить?
     
  2. Linkus

    Linkus Member

    Joined:
    20 Dec 2008
    Messages:
    168
    Likes Received:
    15
    Reputations:
    -1
    хм, по-моему, оно хочет объект класса TPersistent вместо переменной f (может и заблуждаюсь)

    попробуй процедуру AssignFile
     
  3. Redeemer

    Redeemer Member

    Joined:
    3 Jul 2010
    Messages:
    203
    Likes Received:
    24
    Reputations:
    1
    Во-первых надо AssignFile и CloseFile.
    Во-вторых такой способ не рекомендуется использовать уже лет так.... даже не знаю сколько.
     
  4. yfet

    yfet Banned

    Joined:
    11 Jul 2009
    Messages:
    48
    Likes Received:
    19
    Reputations:
    5
    слегка переписал стоку и все скомпилилось

    if clear or (not FileExists(sysDir)) thenrewrite(f) else append(f);
    writeln(f,s);