Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Progress bar, buffer, array;

[es] :: Pascal / Delphi / Kylix :: Progress bar, buffer, array;

[ Pregleda: 1508 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Tamo Neki

Član broj: 307867
Poruke: 20



+17 Profil

icon Progress bar, buffer, array;06.06.2013. u 00:41 - pre 132 meseci
Kako da konvertujem ovaj buffer array of char u string da bih mogao da pozovem funkciju koja ce enkriptovati buffer?
Code:

function RC4(Expression, Password: string): string;

procedure TForm1.CopyFileWithProgressBar1(Source, Destination: string);
var
   FromF, ToF: file of byte;
   Buffer: array[0..4096] of char;
   NumRead,i: integer;
   FileLength: longint;
begin
   AssignFile(FromF, Source);
   reset(FromF);
   AssignFile(ToF, Destination);
   rewrite(ToF);
   FileLength := FileSize(FromF);
   with Progressbar1 do
   begin
     Min := 0;
     Max := FileLength;
     while FileLength > 0 do
     begin
       BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead);     

       Buffer := RC4(Buffer, 'key');
      //Incompatible types: 'Array' and 'String'

       FileLength := FileLength - NumRead;
       BlockWrite(ToF, Buffer , NumRead);
       Position := Position + NumRead;
     end;
     CloseFile(FromF);
     CloseFile(ToF);
   end;
end;


Ili ako neko zeli moze da postavi primer enkripcije fajla sa prikazom progres bara?
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Progress bar, buffer, array;06.06.2013. u 00:44 - pre 132 meseci
Code:

function ArrayToString(const a: array of Char): String;
begin
  if Length(a) > 0 then
    SetString(result, PChar(@a[0]), Length(a))
  else
    result := '';
end;
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
..ppoe.dyn.broadband.blic.net.



+62 Profil

icon Re: Progress bar, buffer, array;06.06.2013. u 11:37 - pre 132 meseci
Hm... par stvari ;)

1) Nisam siguran (pogotovo za starije Delphi-je, recimo 7) da su array of char i array[0..4096] of char kompatibilni..? Ono prvo je dinamicki niz, zar ne?
2) Deklaracija array[0..4096] of char je vrlo, da tako kazemo, nesrecna :) . To zato sto length(...) vraca 4097; ciljalo se valjda na velicinu zapisa na disku, koji je (u svakom slucaju) stepen dvojke.

Pozz
 
Odgovor na temu

Tamo Neki

Član broj: 307867
Poruke: 20



+17 Profil

icon Re: Progress bar, buffer, array;06.06.2013. u 13:52 - pre 132 meseci
Hvala obojici, radi!

Mislim da nisam postavio najbolji primer procedure i verovatno je postupak nesto sporiji jer moram da konvertujem bufer niz u string, narocito ako se radi o nesto vecim fajlovima. -Ili to mozda nije tako primetno?

Moze li neko da mi pomogne kako da podesim svojstva za Max i Position na progress baru? :)

Code:

procedure TForm1.Button1Click(Sender: TObject);
var
          sBuffer : String;
          iStream : TFileStream;
          MyFile  : TFileStream;
begin
          SetLength(sBuffer, 1024);

          iStream := TFileStream.Create('Read.exe',0);
          MyFile := TFileStream.Create('Write.exe',fmCreate);

          Form1.Progressbar1.Min := 0;
          //Form1.Progressbar1.Max:= FileSize(

          while iStream.Position <> iStream.Size do
          begin
             iStream.Read(sBuffer[1],Length(sBuffer));
             sBuffer := RC4(sBuffer, 'Key');
             MyFile.Write(sBuffer[1],Length(sBuffer));
             //Form1.Progressbar1.Position := Position +
          end;

          iStream.Free;
          MyFile.Free;
end;


 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Progress bar, buffer, array;

[ Pregleda: 1508 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.