![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Есть переменная типа Record с двумя полями типа string.
Поля заполняются Edit-ами. Если вводить с клавиатуры или копипастой , то все норм, а если одно поле заполнить через OpenFileDialog.FileName то FileStrim ничего не пишет. Исключений не возникает и при отладке поля заполняются нормально, но файл не создается. |
|
#2
|
|||
|
|||
|
а вы код попробуйте для начала показать..., а то мы ещё как-то не телепаты, только учимся
) |
|
#3
|
||||
|
||||
|
Ключ fmCreate?
|
|
#4
|
|||
|
|||
|
Код:
TMyRecord = record MyFile: string[255]; ... end; ------------------ Edit1.text:=OpenDialog.FileName; FR: TMyRecord; AssignFile(FV,AFileName); Rewrite(FV,1); BlockWrite(FV,FILEHEADER, Length(FILEHEADER)); for I := 0 to FCount - 1 do begin FR.MyFile:=Edit1.Text; ... BlockWrite(FV, FR, SizeOf(FR)); end; CloseFile(FV); OpenDialog создается динамически и освобождается. Файл не пишется ни под каким соусом, только если в Edit1 набрат с клавиатуры. |
|
#5
|
|||
|
|||
|
Глюк в OpenDialog. Если выполнить метод Execute и открыть(выбрать)
файл , то труба дело ,записываться ничего не будет и надо перезапускать программу. А если файл не выбирать (Execute вернет False) то все работает. Код:
OD:=TOpenDialog.Create(Self); ... if OD.Execute then begin Edit1.Text:=OD.FileName; ... end; OD.Free; |
|
#6
|
|||
|
|||
|
Цитата:
Не, глюк в голове. OpenDialog НЕ ПИШЕТ САМ НИЧЕГО. Он только позволяет выбрать имя файла. Да и OPEN предназначен для открытия файла, а для сохранения обычно используется SAVE (собственно, они одинаковые, но имеют ряд отличающихся настроек по умолчанию). Код:
var
dlg : TSaveDialog;
F : File Of Integer;
begin
dlg := TSaveDialog.Create(Self);
If dlg.Execute Then
Begin
AssignFile(F,dlg.FileName);
Rewrite(F);
Write(F,1);
CloseFile(F);
End;
dlg.Free;
end; |
|
#7
|
|||
|
|||
|
Цитата:
Код:
procedure SaveFile; TMyRecord = record MyFile: string[255]; ... end; ------------------ Edit1.text:=OpenDialog.FileName; FR: TMyRecord; AssignFile(FV,AFileName); Rewrite(FV,1); BlockWrite(FV,FILEHEADER, Length(FILEHEADER)); for I := 0 to FCount - 1 do begin FR.MyFile:=Edit1.Text; ... BlockWrite(FV, FR, SizeOf(FR)); end; CloseFile(FV); |
|
#8
|
|||
|
|||
|
Если кому интересно: т.к. приложение в стадии разработки, то имя файла БД указывал просто как 'Bd.dat'. После выполнения OpenDialog1.Execute естественно изменялась текущая директория и БД не писалась, поэтому имя БД нужно записывать полностью с путями
('C:\Bd.dat') |
|
#9
|
||||
|
||||
|
Это вообще-то все знают и так. И еще, есть замечательная функция GetCurrentDirectory
|