Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Cardinal und TFileName (https://www.delphipraxis.net/88201-cardinal-und-tfilename.html)

Merchator 11. Mär 2007 19:10


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:
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;
Funktioniert soweit auch alles wunderbar, nur bis auf diese Zeile

Delphi-Quellcode:
fsize:=GetFileSize(OpenDialog1.FileName);
Danach heißt es "Inkompatible Typen Cardinal und TFileName".
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 ;)

omata 11. Mär 2007 19:50

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:
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;
Gruss
Thorsten

Merchator 11. Mär 2007 20:11

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^^

omata 11. Mär 2007 20:24

Re: Cardinal und TFileName
 
Müsste es vielleicht so sein...
Delphi-Quellcode:
  memo1.lines.LoadFromFile(OpenDialog1.FileName+'.txt');
Gruss
Thorsten

Merchator 12. Mär 2007 16:57

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 01:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz