Kezdőoldal » Számítástechnika » Programozás » Pascal: olyan programot...

Pascal: olyan programot szeretnék írni, amely az egész könyvtárstruktúrát bejárja és a fájlok SHA1 lenyomatát kiszámolja és abszolut útvonallal beírja egy fájlba. Hogy lehetne ezt megoldani?

Figyelt kérdés

Sajnos én csak egyetlen fájlra tudtam megírni és ez sem abszolut útvonallal kerül bele...

Hogy lehetne ezt átírni (nem Delphi-re és nem Lazarus-ra, hanem Free Pascal-os megvalósításra gondolok), hogy hiba nélkül bejárja az egész meghajtót és beírja az eredményeket?

A programozási rész érdekelne, a "dir/b/s>lista.txt" módszerrel meg lehetne oldani, de a Pascal-os megvalósítás érdekelne.


Mennyire lenne bonyolult ezt átírni?


Program Fajl_lenyomat;


uses sha1;


var

f : text;

FileHash : string;

begin

FileHash := SHA1Print( SHA1File ( ParamStr ( 1 ) ) );

assign(f, 'sha1sums');

ReWrite(f);

WriteLn(f,paramstr(1)+': '+filehash);

Close(f);

end.



2016. júl. 22. 19:26
1 2
 1/14 anonim ***** válasza:

Function SHA1Lista(gyökérkönyvtár: string): Fájllista;

var Eredmény: Fájllista;

Begin

.. Vegyük sorra a gyökérkönyvtárban található fájlokat és könyvtárakat:

.. .. Ha (Az éppen kiválasztott elem könyvtár ÉS Az éppen kiválasztott elem nem '.' vagy '..'):

.. .. .. Eredményhez hozzáadjuk az SHA1Lista(gyökérkönyvtár + '/' + éppen kiválasztott elem) eredményét.

.. .. Különben:

.. .. .. Eredményhez hozzáadjuk az éppen kiválasztott elem SHA1 hash-ét.

.. Az Eredményt visszaadjuk.

End;

2016. júl. 22. 19:58
Hasznos számodra ez a válasz?
 2/14 SimkoL ***** válasza:
[link] További kérdés ?
2016. júl. 22. 20:08
Hasznos számodra ez a válasz?
 3/14 SimkoL ***** válasza:
Sem a Lazarus, sem a Delphi - bár elterjedt az elnevezés - nem külön programnyelv. Alapjuk a Free Pascal, Object Pascal, kisebb eltérések lehetnek ide-oda, de az alapok egyeznek.
2016. júl. 22. 20:13
Hasznos számodra ez a válasz?
 4/14 SimkoL ***** válasza:

Tessék, hibakezelés nélkül, te is csinálj valamit:


program project1;


{$mode objfpc}{$H+}


uses Classes, SysUtils, SHA1;


var Lista, ShaLista : TStringList;

i : Integer;


procedure FindFiles(FilesList: TStringList; StartDir, FileMask: string);

var

SR: TSearchRec;

DirList: TStringList;

IsFound: Boolean;

i: integer;

begin

if StartDir[length(StartDir)] <> '\' then StartDir := StartDir + '\';

IsFound := FindFirst(StartDir+FileMask, faAnyFile-faDirectory, SR) = 0;

while IsFound do

begin

FilesList.Add(StartDir + SR.Name);

IsFound := FindNext(SR) = 0;

end;

FindClose(SR);

DirList := TStringList.Create;

IsFound := FindFirst(StartDir+'*.*', faAnyFile, SR) = 0;

while IsFound do

begin

if ((SR.Attr and faDirectory) <> 0) and

(SR.Name[1] <> '.') then DirList.Add(StartDir + SR.Name);

IsFound := FindNext(SR) = 0;

end;

FindClose(SR);

for i := 0 to DirList.Count - 1 do FindFiles(FilesList, DirList[i], FileMask);

DirList.Free;

end;


begin

Lista := TStringList.Create;

ShaLista := TStringList.Create;

FindFiles(Lista, ParamStr(1), '*.*');

Lista.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Files.txt');

for i := 0 to Lista.Count - 1 do

ShaLista.Add(Lista.Strings[i] + ' : ' + SHA1Print(SHA1File(Lista.Strings[i])));

ShaLista.SaveToFile(ExtractFilePath(ParamStr(0)) + 'SHAFiles.txt');

end.

2016. júl. 22. 20:39
Hasznos számodra ez a válasz?
 5/14 SimkoL ***** válasza:
A végére azért egy Lista.Free, ShaLista.Free és egyebek elférnének. Nem értem ha nem tudsz programozni miért ilyenekkel foglalkozol ?
2016. júl. 22. 20:41
Hasznos számodra ez a válasz?
 6/14 anonim ***** válasza:
100%
Simkolra megint rájött a roham.
2016. júl. 22. 23:17
Hasznos számodra ez a válasz?
 7/14 anonim ***** válasza:

> Nem értem ha nem tudsz programozni miért ilyenekkel foglalkozol ?


Miért, nem így kezdte mindenki, hogy nem tudott programozni de programozni akart?

2016. júl. 23. 00:05
Hasznos számodra ez a válasz?
 8/14 A kérdező kommentje:

Köszönöm a válaszokat.

Más feladatokkal el szoktam boldogulni, csak vannak feladatok, amelyek nem mennek.

Szerintem ez az egyetlen kérdés nem elegendő ahoz hogy le lehessen mérni: nem tudok programozni.

Sokszor írtam már itt meg sokak "házi feladatát", olyanokét, akik egyetlen betűt sem írtak le a megoldás érdekében.

2016. júl. 23. 02:12
 9/14 A kérdező kommentje:
A fent említett házifeladat-kéregetők (akik egyetlen betűt se szoktak leírni), nem szoktak ilyen megjegyzéseket kapni, sőt, SimkoL az esetek 99%-ában meg is írja, nem igazán láttam még tőle az évek alatt ilyen megjegyzést mint amit most nekem írt.
2016. júl. 23. 03:17
 10/14 SimkoL ***** válasza:

Nem gurult el a gyógyszerem, de már kérdésből is - nem Delphi, nem Lazarus - látszott, hogy nincs tisztában még a nyelvvel sem, de ezt már kifejtettem.

A FindFirst, FindNext... sem a könyv végén van.

Ezek után meg jön a hasító függvénnyel ?

...és a végére amit sokszor elmondok a kód meg pocsék.


Off: Géza megint te vagy az ?

2016. júl. 23. 10:10
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!