Доброго времени суток!
Суть проблемы. Использую массив записей, как делал это и раньше, и не раз:
| Код | type TFileRecC = File of Byte;
type TRecTabFile = record rtNameSize : byte; rtFileName : string; rtFileSize : string[10]; rtFile : string; end;
type TRecTab = array of TRecTabFile;
...
procedure FileRecCAdd(FileName,PachFileName, Z :String; var TypeFile:TRecTab); var index:integer; begin index:=length(TypeFile)+1; SetLength(TypeFile,index); TypeFile[index].rtNameSize:=Length(PachFileName); TypeFile[index].rtFileName:=PachFileName; TypeFile[index].rtFile:=FileName; TypeFile[index].rtFileSize:=Z; end;
procedure RecTabAddFull(dir:string; var TypeFile:TRecTab); var Filename:TStringList; PachName:TStringList; Z:TStringList; i,con:word; begin Filename:=TStringList.Create; PachName:=TStringList.Create; Z:=TStringList.Create; Filename.Clear; PachName.Clear; Z.Clear; ScanDir(Dir, Dir, Filename, PachName,Z); con:=Filename.Count; if con>0 then begin for i:=0 to (con-1) do begin FileRecCAdd(Filename.Strings[i],PachName.Strings[i],Z.Strings[i],TypeFile); end; end; Filename.Free; PachName.Free; end;
... |
но процедура
| Код | procedure FileRecCAdd(FileName,PachFileName, Z :String; var TypeFile:TRecTab); var index:integer; begin index:=length(TypeFile)+1; SetLength(TypeFile,index); TypeFile[index].rtNameSize:=Length(PachFileName); TypeFile[index].rtFileName:=PachFileName; TypeFile[index].rtFile:=FileName; TypeFile[index].rtFileSize:=Z; end;
|
выполняется только один раз, а на второй раз, на строчке:
| Код | SetLength(TypeFile,index);
|
вылетает дебаггер... сначала в коде была TypeFile[index].rtFile - типа TFileRecC (файловая переменная), думал что из-за этого, но и замена на строку с именем файла ничего не дало...
Заранее всем Спасибо!!! |