Итак:
- Код: Выделить всё
procedure TEditForm.FileNameEdit1AcceptFileName(Sender: TObject;
var Value: String);
var LocFS:TFileStream;
begin
ShowMessage(Value);
LocFS.Create(Value,fmOpenRead);
- Код: Выделить всё
constructor TFileStream.Create(const AFileName: string; Mode: Word);
begin
FFileName:=AFileName;
- Код: Выделить всё
Procedure fpc_AnsiStr_Decr_Ref (Var S : Pointer); [Public,Alias:'FPC_ANSISTR_DECR_REF']; compilerproc; nostackframe; assembler;
asm
cmpl $0,(%eax)
jne .Ldecr_ref_continue
ret
.Ldecr_ref_continue:
// Temps allocated between ebp-24 and ebp+0
subl $4,%esp
// Var S located in register
// Var l located in register
movl %eax,(%esp)
// [101] l:=@PAnsiRec(S-FirstOff)^.Ref;
movl (%eax),%edx
subl $8,%edx
// [102] If l^<0 then exit;
cmpl $0,(%edx)
value получаем через TFilenameEdit, value='D:\RCIMAGE.ISO'.
Что бы это значило?
ВОобще, задача тривиальная: получить размер файла по его имени. Причем - не важно, открыт ли он сейчас кем-нибудь или нет, хочу открывать в RO/DenyNone только для определения размера. Со стримами начал возиться потому что reset(file) вылетает независимо от filemode в ситуации, когда файл кем-то открыт.
Имя, переданное в value, реальное. Файл существует, размер около 10М, не открыт никем вообще, лежит в корне fat32-диска. КОнкретно с ним связка assign/reset работала нормально.
Добавлено спустя 1 минуту 30 секунд:
В крайнем, конечно, случае, воспользуюсь findfirst, но это же изврат