singlepost

SaveDialog1.FileName. запор!!!! << На главную или назад  

Доброго времени суток, пишу под delphi 2009, столкнулся с лажей такой:
[CODE]
procedure TMainForm.Button5Click(Sender: TObject);
begin
if (SaveDialog1.Execute()) then PathLog := SaveDialog1.FileName + '.log'
else PathLog := '';
edit1.Text := PathLog;
end;
[/CODE]

в переменную PathLog все пишется замечательно. стока как строка, но когда я потом пытаюсь сохранить ее в типизированный файл, он не сохраняет…
я грешу на FileName типа TFilename, но он все равно ж string… главно, если написать:
[CODE]
if (SaveDialog1.Execute()) then PathLog := SaveDialog1.FileName + '.log'
else PathLog := '';
//тут какое – нить присвоение, то все замечательно сохраняет…
Pathlog := 'C:\';
edit1.Text := PathLog;
[/CODE]

Что этот Filename со строкой делает????

29 ответов в теме “SaveDialog1.FileName. запор!!!!”

  1. 19
    Владимир Муромский ответил:

    А Delphi я не люблю за то что его востребованность стремится к нулю:)

  2. 18
    Андрей Щипцов ответил:

    Во-во… напишешь "Кати квадратное" – он и катит))

  3. 17
    Владимир Муромский ответил:

    Вот за что я РНР и AS 3.0 не люблю. Ошибешься – и глазом не моргнет, только работать будет не так, как надо. И сиди думай что не так.

  4. 16
    Антон Кононов ответил:

    старый добрый дед Delphi не даст тебе повредить себя)))

  5. 15
    Андрей Щипцов ответил:

    да я ни в коем разе не пытался этого делать)) этот дед мой моск повредил)) и не только мой))

  6. 14
    Антон Кононов ответил:

    дельфи он добрый как дед

    не даст тебе использовать неизвестно какую переменную

    надо ему эту переменную сначала показать, на смотрины сводить то есть

    дед тебе добро и даст на ее использование

    а коли ты, мОлодец, не по назначению юзать переменную будешь (ну там в позах разных типа из real в integer), то дед он тут как тут бьет тебя по рукам линейкой, чтоб не повадно было, чтоб предохранялся через round() или trunc()

    PS 0_0 меня плюшит от 1С и НДС

  7. 13
    Андрей Щипцов ответил:

    Владимир Aiditz Муромский, +1!!!
    Проблема решилась… надо было выводить полный путь… AssignFIle(f, ExtractFilePath(Application.Exename) + 'settings.dat');
    Но почему без "rec.p_l := ShortString(PathLog);" все сохраняет, для меня остается загадкой… кто – нить знает???

  8. 12
    Владимир Муромский ответил:

    Андрей, а может у тебя имя файла в какой-нибудь непонятной кодировке? Раз даже один символ рушит картину:)

    Добавлено:
    ЙОПТ.
    assignfile(f, 'Settings.dat');
    меняй на
    AssignFIle(f, ExtractFilePath(Application.Exename) + 'settings.dat');

  9. 11
    Антон Кононов ответил:

    и что лежит в PathLog после такой операции?

  10. 10
    Андрей Щипцов ответил:

    Антон RichDad Кононов, не катит…
    даже PathLog := SaveDialog1.FileName уже не сохраняет файл…. даже один символ из FileName берем – он уже не сохраняет почему – то… как будто любое обращение к нему все портит….

  11. 9
    Антон Кононов ответил:

    ход конем?

    меняем "PathLog := SaveDialog1.FileName + '.log'"

    на Concat(…) ?

  12. 8
    Андрей Щипцов ответил:

    полный не выложишь – много там, не влазит. основное:
    type
    sett = record
    p_l, p_s: String[255];
    sil, del_f: boolean;
    end;
    var
    MainForm: TMainForm;
    PathLog, PathService: String;
    Silent, Delfiles: boolean;

    procedure LoadSettings(); //загрузка настроек из файла(если файла нет, то создается)
    var
    f: file of sett;
    rec: sett;
    begin
    assignfile(f, 'Settings.dat');
    try
    reset(f);
    read(f, rec);
    PathLog := String(rec.p_l);
    PathService := String(rec.p_s);
    Silent := rec.sil;
    Delfiles := rec.del_f;
    except
    rewrite(f);
    PathService := ExtractFileDir(Application.ExeName) + '\';
    PathLog := PathService + 'Report.log';
    rec.p_l := ShortString(PathLog);
    rec.p_s := ShortString(PathService);
    rec.sil := true;
    rec.del_f := true;
    write(f, rec);
    showmessage('File settings not found. File created…');
    end;
    closefile(f);
    MainForm.Edit1.Text := PathLog;
    MainForm.Edit2.Text := PathService;
    MainForm.CheckBox1.Checked := rec.sil;
    MainForm.CheckBox2.Checked := rec.del_f;
    end;

    procedure SaveSettings(); //сохранение настроек
    var
    f: file of sett;
    rec: sett;
    begin
    assignfile(f, 'Settings.dat');
    rewrite(f);
    rec.p_s := ShortString(PathService);
    //rec.p_l := Copy(PathLog, 1, 255);
    rec.p_l := ShortString(PathLog);
    rec.sil := MainForm.CheckBox1.Checked;
    rec.del_f := MainForm.CheckBox2.Checked;
    write(f,rec);
    closefile(f);
    end;

  13. 7
    Владимир Муромский ответил:

    Полный код в студию

  14. 6
    Андрей Щипцов ответил:

    Перезагружал комп(с хуками намутил чет…)
    потом попробовал по совету Владимира Aiditz Муромского
    один раз сохранил все норм, а потом опять такая же тупость…
    я уж обрадовался блин…

  15. 5
    Владимир Муромский ответил:

    Попробуй вместо ShortString() использовать Copy(PathLog, 1, 255) или типа того

  16. 4
    Андрей Щипцов ответил:

    Леонид maxleo Максимов, и?
    Я даже брал делал так:
    тупо:
    s := '';
    for i := 3 to 5 do s:=s+SaveDialog1.FileName[i];
    и пытаюсь записать s
    и код не работает… Filename при этом 'C:\Windows\report.log'

  17. 3
    Леонид Максимов ответил:

    имхо SaveDialog1.FileName заканчивается нулем.

  18. 2
    Дмитрий Милють ответил:

    я думаю проблема в том как сохраняете в типизированный файл.
    как выглядит тип? в нём поле string определённой длины? входная строка имеет подходящую длину?

  19. 1
    Андрей Щипцов ответил:

    структура
    type
    sett = record
    p_l, p_s: String[255];
    sil: boolean;
    end;

    procedure SaveSettings(); //сохранение настроек
    var
    f: file of sett;
    rec: sett;
    begin
    assignfile(f, 'Settings.dat');
    rewrite(f);
    rec.p_s := ShortString(PathService);
    rec.p_l := ShortString(PathLog);
    rec.sil := MainForm.CheckBox1.Checked;
    write(f,rec);
    closefile(f);
    end;

    я грю, любое перепресвоение после: PathLog := SaveDialog1.FileName + '.log'
    и все норм сохраняет…

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.