Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler bei write / writeln in eine Datei (https://www.delphipraxis.net/59621-fehler-bei-write-writeln-eine-datei.html)

GuenterS 26. Dez 2005 11:49

Re: Fehler bei write / writeln in eine Datei
 
Du könntest ja auch File of byte bzw. file of char verwenden und deine Variable zeichen zu einem char machen.

Für den Hausgebrauch sollte dieses Verfahren um Dateien zu schreddern ausreichend sein, denk ich. Wirklich pyshikalisch schreddern wie in Presse oder so kann man per Prog eh nicht realisieren.

Chrissi91 27. Dez 2005 08:02

Re: Fehler bei write / writeln in eine Datei
 
Delphi-Quellcode:
procedure DateiUeberschreiben(pfad: string; groesse: integer);
const
 mychar :string = ('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"§$%&/()=?~+,.-{}[]²³\|*');
var
 i, a : integer;
 zeichen: Char;
 datei: file of char;
begin
 for a := 1 to 10 do
  begin
   Assign(datei, pfad);
   rewrite(datei);
   for i := 1 to groesse do
    begin
     zeichen := copy(PChar(mychar),random(10)+1,1); // [Error] Unit1.pas(44): Incompatible types: 'Char' and 'String'
     write(datei,zeichen);
    end;
   closefile(datei);
  end;
 deletefile(form1.verzeichnis.text);
end;
Jetzt meckert er wieder egen dem Charakter, dabei habe ich doch jetzt darum PChar() gesetzt.

fkerber 27. Dez 2005 08:07

Re: Fehler bei write / writeln in eine Datei
 
Hi!

Sollte assign nicht immer noch assignFile heißen?
Lass das PChar mal weg.


Ciao Frederic

Chrissi91 27. Dez 2005 08:09

Re: Fehler bei write / writeln in eine Datei
 
Zitat:

Zitat von fkerber
Hi!

Sollte assign nicht immer noch assignFile heißen?
Lass das PChar mal weg.


Ciao Frederic

datei ist vom Typ File of Char. Ich denke, da brauche ich assign, oder habe ich das missverstanden? Wenn ich PChar weglasse, kommt die selbe Fehlermeldung.

GuenterS 27. Dez 2005 08:12

Re: Fehler bei write / writeln in eine Datei
 
Nein, Assign ist für andere Zwecke gedacht, Du kannst/solltest trotzdem AssignFile verwenden.

Wegen dem anderen Problem, mach aus deinem String einen ShortString, er ist ja nicht länger als 255 Zeichen und greif via [] auf die einzelnen Zeichen zu. das sollte funktionieren.

Chrissi91 27. Dez 2005 08:15

Re: Fehler bei write / writeln in eine Datei
 
Ist wohl noch einnbisschen früh für mich :drunken:

Delphi-Quellcode:
procedure DateiUeberschreiben(pfad: string; groesse: integer);
const
 mychar :shortstring = ('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"§$%&/()=?~+,.-{}[]²³\|*');
var
 i, a : integer;
 zeichen: Char;
 datei: file of char;
begin
 for a := 1 to 10 do
  begin
   Assignfile(datei, pfad);
   rewrite(datei);
   for i := 1 to groesse do
    begin
     zeichen := copy(mychar[random(10)+1]),i,1); // not enough parameters. was mache ich denn jetzt wieder flasch :stupid:
     write(datei,zeichen);
    end;
   closefile(datei);
  end;
 deletefile(form1.verzeichnis.text);
end;

fkerber 27. Dez 2005 08:18

Re: Fehler bei write / writeln in eine Datei
 
HI!

Wenn ich nur Assign verwende kommt bei mir dieser Fehler:
[Error] Unit1.pas(38): Incompatible types: 'TPersistent' and 'Text'

Also: AssignFile verwenden


Zum Char-Problem:
zeichen erwartet einen Char, copy liefert einen String der Länge 1 zurück
==> nur auf erstes Zeichen zugreifen:

Delphi-Quellcode:
zeichen := copy(mychar,random(10)+1,1)[1];

Ciao Frederic

GuenterS 27. Dez 2005 08:19

Re: Fehler bei write / writeln in eine Datei
 
Fkerbers Idee ist gut,

was ich gemeint habe wäre

Delphi-Quellcode:
zeichen := mychar[random(10)+1];
gewesen.

fkerber 27. Dez 2005 08:28

Re: Fehler bei write / writeln in eine Datei
 
Hi!

Falls du die Idee von GuenterS aufgreifen willst, musst du nur die falsche ) an der Stelle da weglassen:

Delphi-Quellcode:
(mychar[random(10)+1]),i,1);
                     ^^

Ciao Frederic

Chrissi91 27. Dez 2005 08:31

Re: Fehler bei write / writeln in eine Datei
 
Danke, ich hab es jetzt richtig. :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:04 Uhr.
Seite 2 von 2     12   

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