bueno nesecito una ayuda con algo que me pasa en delphi 2010
tengo un archivo lo cargo en un TFileStream;
asi
Código Delphi
[-]
path:=getpath (Edit2.Text); if FileExists(path) then
begin
f := TFileStream.Create(path, fmOpenRead);
if(Load(f)) then begin
showmessage('1');
end;
function TForm1.Load(Stream: TStream): Boolean;
var
o: TObject;
begin
o := bdecodeStream(Stream);
end;
function TForm1.bdecodeStream(s: TStream): TObject;
var
r: TObject;
c: char;
n: Integer;
begin
n := s.Read(c, 1);
if(n > 0) then begin
begin
Edit1.Text := c;
r := nil;
end;
end else begin
r := nil;
end;
bdecodeStream := r;
end;
el resultado en Edit1.Text es 'd'
pero al hacer lo el cliente de torrent no da un char 'ɤ' extraño como un cuadro
lo unioco raro es que lo hago desde un solo for y ello desde varia unidades
asi
Código Delphi
[-]
procedure TfrmSeeder.txtTorrentFileChange(Sender: TObject);
var f:TFileStream;
i:integer;
path:string;
thisfile:TTorrentSubFile;
begin
path:=StripQuotes(txtTorrentFile.Text);
if FileExists(path) then
begin
try
f := TFileStream.Create(path, fmOpenRead);
if(TorrentFile.Load(f)) then begin
...
...
end;
unit TorrentFile;
..
..
function TTorrentFile.Load(Stream: TStream): Boolean;
var
info, thisfile: TObjectHash;
files, path, backup, backup2: TObjectList;
fp, fn: String;
i, j, pcount: Integer;
sz, fs, fo: Int64;
sha: TSHA1;
r: Boolean;
o: TObject;
p: pointer;
s:string;
begin
Clear();
r := False;
sz := 0;
try
try
sha := TSHA1.Create();
o := bdecodeStream(Stream);
...
...
end;
unit BDecode;
...
..
..
function bdecodeStream(s: TStream): TObject;
var
r: TObject;
c: char;
n: Integer;
begin
n := s.Read(c, 1);
if(n > 0) then begin
case c of
'd' : r:= bdecodeHash(s);
'l' : r:= bdecodeList(s);
'i' : r:= bdecodeInt64(s);
'0'..'9' : r:= bdecodeString(s,StrToInt(c));
else r := nil;
end;
end else begin
r := nil;
end;
bdecodeStream := r;
end;
aqui el resul nunca es 'd' si alguien sabe se lo agradesco de antemano
end;