![]() |
Cardinal und TFileName
Hallo liebe DelphiPraxis.net-Community.
Es freut mich zu sehen, dass auch noch viele andere gerne mit Delphi arbeiten. Leider bin ich noch ziemlicher Anfänger in diesem Gebiet. Die gröbsten Grundlagen kenne ich schon, in die Feinheiten werde ich noch gehen. Nun aber zu meiner eigentlichen Frage: Ich will ein Programm machen, welches eine Datei öffnet und mit der XOR Methode entschlüsselt. Dieser entschlüsselte Text soll danach in einem Memo angezeigt werden. Hier der Quellcode:
Delphi-Quellcode:
Funktioniert soweit auch alles wunderbar, nur bis auf diese Zeile
begin
if not OpenDialog1.Execute then exit; fsize:=GetFileSize(OpenDialog1.FileName); <--Hier weiß ich nicht weiter! assignfile(f,OpenDialog1.FileName); reset(f,1); blockread(f,c,fsize); for k:=1 to fsize do c[k]:=chr(ord(c[k]) xor 123); closefile(f); assignfile(f,OpenDialog1.FileName+'.txt'); rewrite(f,1); blockwrite(f,c,fsize); memo1.lines.LoadFromFile(OpenDialog1.FileName); end;
Delphi-Quellcode:
Danach heißt es "Inkompatible Typen Cardinal und TFileName".
fsize:=GetFileSize(OpenDialog1.FileName);
Klar weiß ich, was "inkompatibel" bedeutet, aber wie kriege ich diesen fehler weg? Die Variablen sind sowit auch richtig festgelegt. Oder gibt es noch einen anderen (einfacheren) Weg, um die Char-Anzahl zu ermitteln? Wenn ja, bitte erklärt es ausführlich, denn ich bin ja noch nicht so weit :D Ich hoffe ebenfalls, dass ich ins richtige Forum gepostet habe. In der Suche habe ich keine passende Antwort gefunden, leider, und ich hoffe, dass das auch stimmt^^ Ich glaube, ich stehe auf dem Schlauch... mfG, Merchator Achja, ich benutze Borland Delphi 7, aber ich glaube, dies ist weniger von Bedeutung ;) |
Re: Cardinal und TFileName
Was ist GetFileSize?
Versuch mal: fsize:=FileSize(f); FileSize will das Dateihandle haben. Versuch mal übersichtlicher einzurücken und den Befehl exit zuvermeiden.
Delphi-Quellcode:
Gruss
begin
if OpenDialog1.Execute then begin try assignfile(f, OpenDialog1.FileName); reset(f, 1); fsize:=FileSize(f); blockread(f, c, fsize); for k:=1 to fsize do c[k]:=chr(ord(c[k]) xor 123); finally closefile(f); end; try assignfile(f, OpenDialog1.FileName+'.txt'); rewrite(f, 1); blockwrite(f, c, fsize); finally closefile(f); end; memo1.lines.LoadFromFile(OpenDialog1.FileName); end; end; Thorsten |
Re: Cardinal und TFileName
Vielen Dank für die schnelle Antwort!
Das Programm funst jetzt soweit auch, nur eine kleine Peinlichkeit :oops: Der Text im Memo1 ist immernoch verschlüsselt. Wie biege ich das jetzt hin, dass die , ich nenn sie jetzt mal, "decodierte" datei gleich ins Memo geschrieben wird, und zwar richtig? Ich will unnötige TxT datein vermeiden. :oops: Sorry, aber ich bin halt noch ein Anfänger. ;) Achja, und den Befehl "GetFileSize" habe ich irgendwo mal gelesen, und dachte mir, dass er hier funktionieren würde^^ |
Re: Cardinal und TFileName
Müsste es vielleicht so sein...
Delphi-Quellcode:
Gruss
memo1.lines.LoadFromFile(OpenDialog1.FileName+'.txt');
Thorsten |
Re: Cardinal und TFileName
Vielen Dank, klappt Wunderbar!
Jetzt wo man es sieht ist es echt simpel... Ich werde dieses Forum weiterempfehlen! mfG,Merchator :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 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