Carregar String em tipo File ???
bem amigos estou com uma grande bronca estou querendo carregar dados de um arquivo e passar informações do tipo string para file
var
F : file;
Atr : String;
begin
[b:673e05a42f] if ExtractFileExt(filename) = ´.zip´ then begin
Zip.FileName:= filename;
Zip.OpenArchive;
Zip.FindFirst(´*.nes´, AI);
Zip.ExtractToString (AI.FileName, Atr);
end;[/b:673e05a42f]
FileMode:= fmOpenRead;
AssignFile(F, Filename);
Reset(F, 1);
BlockRead(F , ROMHeader, SizeOf(ROMHeader), i);
Ps: ROMHeader e uma variavel global.
Tenho que carregar em F o arquivo extraido do arquivo zipado Atr, como posso realizar esta função.
Obrigado galera...
var
F : file;
Atr : String;
begin
[b:673e05a42f] if ExtractFileExt(filename) = ´.zip´ then begin
Zip.FileName:= filename;
Zip.OpenArchive;
Zip.FindFirst(´*.nes´, AI);
Zip.ExtractToString (AI.FileName, Atr);
end;[/b:673e05a42f]
FileMode:= fmOpenRead;
AssignFile(F, Filename);
Reset(F, 1);
BlockRead(F , ROMHeader, SizeOf(ROMHeader), i);
Ps: ROMHeader e uma variavel global.
Tenho que carregar em F o arquivo extraido do arquivo zipado Atr, como posso realizar esta função.
Obrigado galera...
Sremulador
Curtidas 0
Respostas
Massuda
01/09/2005
...estou querendo carregar dados de um arquivo e passar informações do tipo string para file
String e File são tipos de dados que não podem ser convertidos de um para o outro....Tenho que carregar em F o arquivo extraido do arquivo zipado Atr...
Talvez ficasse mais simples se você gravasse o arquivo que você extrai do ZIP e depois lesse desse arquivo e não do ZIP original; para isso funcionar, basta incluir, dentro do if, a gravação do arquivo extraído e atualizar o valor de Filename, o resto continua igual (provavelmente precisa apagar o arquivo depois que terminar de utilizá-lo).GOSTEI 0
Sremulador
01/09/2005
Bem amigo massuda se possivel fosse passar qualquer tipo stream para file já quebraria o galho, Memorystream, Filestream...
Quanto a extrair e jogar em uma area fisica acho que não seria uma boa alternativa, pois caso houver qualquer tipo de erro no sistema ele pode ficar ocioso :(
Valeu...
Quanto a extrair e jogar em uma area fisica acho que não seria uma boa alternativa, pois caso houver qualquer tipo de erro no sistema ele pode ficar ocioso :(
Valeu...
GOSTEI 0
Massuda
01/09/2005
...se possivel fosse passar qualquer tipo stream para file já quebraria o galho...
O problema é que File (assim como todas as functions/procedures que usam um File) assume que estamos falando de algo que está no disco e, como você mesmo escreveu, não é o caso.Talvez valesse a pena você reescrever a parte que carrega a ROM no seu programa de modo a essa parte usar streams ao invés de um File. Por exemplo, um esqueleto baseado no que você postou seria (não testei)...
var Stream: TStream; S: string; ... if ExtractFileExt(Filename) = ´.zip´ then begin // é um arquivo zipado ... Zip.ExtractToString (AI.FileName, S); Stream := TStringStream.Create(S); end else begin // é um arquivo normal Stream := TFileStream.Create(Filename, fmOpenRead); end; Stream.ReadBuffer(ROMHeader, SizeOf(ROMHeader)); ... // lembre de fazer Stream.Free depois que não precisar mais da stream ...
GOSTEI 0
Sremulador
01/09/2005
valeu massuda funcionou :)
GOSTEI 0