![]() |
Frage zum Code von Luckies FileCrypter
Hallo!
Ich habe eine Frage zum Code von Luckies ![]() Ich wollte mich mal näher mit dem Dec von Hagen Reddmann (negaH) beschäftigen, da dachte ich, ich schaue mir Luckies Code an, da dieser immer ordentlich formatiert, kommentiert und sauber programmiert ist. Ich verstehe ihn soweit auch ganz gut, nur habe ich folgendes Problem: Verschlüsseln kann man die Dateien ohne Probleme in einer Schleife, wenn man mehrere auf einmal verschlüsseln möchte, nur beim Entschlüsseln habe ich Probleme, da der Thread einige zeit zum Entschlüsseln benötigt und währenddessen schon die nächste Datei entschlüsselt wird, was natürlich nicht funktionieren kann. Ich müsste also Abfargen, ob der Thread seine Funktion schon erfüllt hat und nun für die nächste Datei bereit ist. So geht es nicht, da der Thread hier noch arbeitet, während das Programm schon bei der nächsten Datei ist:
Delphi-Quellcode:
Wie realisiert man das?
for i := 0 to Anz - 1 do
begin if ReadFileHeader(StrList[i], FileHeader) then begin CipherClass := FileHeader.FCipherClass; HashClass := FileHeader.FHashClass; HashEncodedFile := FileHeader.FHashString; RunDecodeThread(StrList[i], ExtractFilePath(StrList[i]), Edit5.Text, HashEncodedFile, HashClass, CipherClass, Handle); end; |
Re: Frage zum Code von Luckies FileCrypter
Hm. Sollte eigentlich kein Problem sein. Wenn du 5 Dateien in der Liste hast, dann hast du eben 5 Threads zum Decodieren laufen. Da muss kein Thread warten. Das ist ja Sinn und Zweck des ganzen.
|
Re: Frage zum Code von Luckies FileCrypter
Das dachte ich auch erst, da Windows ja gut mit mehreren Threads auskommt, aber nach ca. 4 bis 5 Dateien kommt eine AccessViolation, und ich kann es nur darauf zurückführen.
Ich sehe gerade, bei mir laufen 623 Threads. Bisschen viel. Könnte aber daran liegen, da ich das Programm oft zu dieser AccessViolation gezwungen habe. |
Re: Frage zum Code von Luckies FileCrypter
623 Thread die deinem Prozess gehören oder 623 Threads im ganzen Windows? Ich habe hier nur ca. 250 Threads laufen.
Stimmt denn, was in der Varaiable Anz drinsteht? |
Re: Frage zum Code von Luckies FileCrypter
623 in ganz Windows, ich reboote mal, dann sind's sicher weniger. Der Wert in der Variablen 'Anz' stimmt.
Nachtrag: Nach dem Neustart habe ich über 630 Threads in Windows. :? |
Re: Frage zum Code von Luckies FileCrypter
Wer bietet mehr? Nicht shclecht, aber das sollte nicht das Problem sein. Greifen deine Threads auf eine gemeinsame globale Varaible zurück? Ansonsten hätte ich auch keine Idee. Schick mir das Projekt einfach mal.
|
Re: Frage zum Code von Luckies FileCrypter
Liste der Anhänge anzeigen (Anzahl: 1)
5:19 Uhr :shock:
Zitat:
Zitat:
Der Fehler tritt komischerweise nur manchmal auf. Zitat:
Mir ist das auch nicht sonderlich wichtig, nur würde mich interessieren, was ich falsch mache. Bestimmt ist's so ein ganz blöder Leichtsinnsfehler. |
Re: Frage zum Code von Luckies FileCrypter
Zitat:
Zitat:
|
Re: Frage zum Code von Luckies FileCrypter
OT:
Zitat:
Zitat:
Edit 1+2: Tippfehler verbessert |
Re: Frage zum Code von Luckies FileCrypter
Ich bekomme ab und zu mal diese Meldung:
Zitat:
|
Re: Frage zum Code von Luckies FileCrypter
Danke, dass du dir das angesehen hast. Ich forsche mal weiter, wo der Fehler liegen könnte, vielleicht liegt es wirklich daran, dass ich so viele Threads laufen habe, aber damit sollte Windows XP eigentlich klar kommen.
|
Re: Frage zum Code von Luckies FileCrypter
Also die 630 Threads sollten nicht das Problem sein..! Aber falls du wissen willst weshalb das bei dir so viele sind kannst du der Sache mit meinem X-Spy ganz gut auf den Grund gehen..! ;)
Ich hab mir deinen Code mal ein bisschen angeschaut und mir ist dabei aufgefallen, dass du in deinem Decode-Thread direkt auf deine Form zugreifst:
Delphi-Quellcode:
Form1.LblStatus.Caption := 'Status: Prüfsumme erzeugen...';
|
Re: Frage zum Code von Luckies FileCrypter
Zitat:
Ich habe festgestellt, dass, wenn ich mehrere Dateien gleichzeitig entschlüssele, einige hinterher 0 Byte Dateien sind, so rund die Hälfte. Auch werden diese nicht korrekt verschlüsselt. Anstatt 3.5 MB, haben sie nach dem Verschlüsseln 500 kB und nach darauffolgendem Entschlüsseln 0 Byte. Kannst du, Luckie, oder auch jemand anderes, mir sagen, woran das liegen könnte? |
Re: Frage zum Code von Luckies FileCrypter
Zitat:
Delphi-Quellcode:
procedure TStreamProgressAdapter.DoProgress(Writing: Boolean);
begin FPercent := Round(100 / FMax * FCurrentPos); SendMessage(FHandle, SPM_PROGRESS, 0, FPercent); if FPercent = 100 then SendMessage(FHandle, SPM_DONE, 0, 0) end; |
Re: Frage zum Code von Luckies FileCrypter
Ich spreche von der Unit DecodeThread, da hast du folgendes stehen:
Delphi-Quellcode:
Aber das ist eigentlich ja auch nebensächlich.
procedure TDecodeThread.Execute;
var HashDecodedFile: string; begin if not DecodeFile(FFilename, FFolder, FPW, FCipherClass, FHandle) then Messagebox(Handle, 'Fehler beim Entschlüsseln der Datei.', 'Datei entschlüsseln', MB_ICONSTOP); Form1.Statusbar1.Panels[0].Text := StatusArray[2]; //<== Form1.Statusbar1.Refresh; //<== ... |
Re: Frage zum Code von Luckies FileCrypter
Mist, ich wußte doch, dass ich was vergessen hatte. Das sollte man logischerweise via Synchronize machen.
|
Re: Frage zum Code von Luckies FileCrypter
Ich habe heute noch daran rumgespielt, komme aber auf keinen grünen Zweig, irgendwie ist das seltsam.
Btw: Mein Vater hat sich Win XP (inkl SP2) gekauft und direkt nach der Installation laufen über 500 Threads ;) |
Re: Frage zum Code von Luckies FileCrypter
Ich pushe mal, vielleicht weiß einer, weshalb das Probelm auftritt. Ich hatte nämlich noch nicht vor, aufzugeben. ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz