Доброго времени суток, пишу под 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 со строкой делает????
22 сентября 2009 в 11:04
А Delphi я не люблю за то что его востребованность стремится к нулю:)
22 сентября 2009 в 10:00
Во-во… напишешь "Кати квадратное" – он и катит))
21 сентября 2009 в 18:02
Вот за что я РНР и AS 3.0 не люблю. Ошибешься – и глазом не моргнет, только работать будет не так, как надо. И сиди думай что не так.
21 сентября 2009 в 15:02
старый добрый дед Delphi не даст тебе повредить себя)))
21 сентября 2009 в 15:02
да я ни в коем разе не пытался этого делать)) этот дед мой моск повредил)) и не только мой))
21 сентября 2009 в 15:02
дельфи он добрый как дед
не даст тебе использовать неизвестно какую переменную
надо ему эту переменную сначала показать, на смотрины сводить то есть
дед тебе добро и даст на ее использование
а коли ты, мОлодец, не по назначению юзать переменную будешь (ну там в позах разных типа из real в integer), то дед он тут как тут бьет тебя по рукам линейкой, чтоб не повадно было, чтоб предохранялся через round() или trunc()
PS 0_0 меня плюшит от 1С и НДС
21 сентября 2009 в 14:03
Владимир Aiditz Муромский, +1!!!
Проблема решилась… надо было выводить полный путь… AssignFIle(f, ExtractFilePath(Application.Exename) + 'settings.dat');
Но почему без "rec.p_l := ShortString(PathLog);" все сохраняет, для меня остается загадкой… кто – нить знает???
21 сентября 2009 в 13:04
Андрей, а может у тебя имя файла в какой-нибудь непонятной кодировке? Раз даже один символ рушит картину:)
Добавлено:
ЙОПТ.
assignfile(f, 'Settings.dat');
меняй на
AssignFIle(f, ExtractFilePath(Application.Exename) + 'settings.dat');
21 сентября 2009 в 13:00
и что лежит в PathLog после такой операции?
21 сентября 2009 в 10:04
Антон RichDad Кононов, не катит…
даже PathLog := SaveDialog1.FileName уже не сохраняет файл…. даже один символ из FileName берем – он уже не сохраняет почему – то… как будто любое обращение к нему все портит….
21 сентября 2009 в 9:02
ход конем?
меняем "PathLog := SaveDialog1.FileName + '.log'"
на Concat(…) ?
21 сентября 2009 в 2:02
полный не выложишь – много там, не влазит. основное:
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;
21 сентября 2009 в 1:05
Полный код в студию
21 сентября 2009 в 1:04
Перезагружал комп(с хуками намутил чет…)
потом попробовал по совету Владимира Aiditz Муромского
один раз сохранил все норм, а потом опять такая же тупость…
я уж обрадовался блин…
21 сентября 2009 в 1:01
Попробуй вместо ShortString() использовать Copy(PathLog, 1, 255) или типа того
20 сентября 2009 в 23:01
Леонид maxleo Максимов, и?
Я даже брал делал так:
тупо:
s := '';
for i := 3 to 5 do s:=s+SaveDialog1.FileName[i];
и пытаюсь записать s
и код не работает… Filename при этом 'C:\Windows\report.log'
20 сентября 2009 в 22:05
имхо SaveDialog1.FileName заканчивается нулем.
20 сентября 2009 в 22:04
я думаю проблема в том как сохраняете в типизированный файл.
как выглядит тип? в нём поле string определённой длины? входная строка имеет подходящую длину?
20 сентября 2009 в 22:04
структура
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'
и все норм сохраняет…