AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fehler bei write / writeln in eine Datei
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei write / writeln in eine Datei

Ein Thema von Chrissi91 · begonnen am 26. Dez 2005 · letzter Beitrag vom 27. Dez 2005
Antwort Antwort
Seite 1 von 2  1 2      
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#1

Fehler bei write / writeln in eine Datei

  Alt 26. Dez 2005, 08:12
Meine Procedure:

Delphi-Quellcode:
procedure DateiUeberschreiben(pfad: string; groesse: integer);
var
 i, a, zufall: integer;
 zeichen: string;
begin
 for a:= 1 to 10 do
  begin
   assign(datei,pfad);
   rewrite(datei);
   for i:= 1 to groesse do
    begin
     zufall:=random(15)+1;
     if zufall= 1 then zeichen:='@';
     if zufall= 2 then zeichen:='t';
     if zufall= 3 then zeichen:='ö';
     if zufall= 4 then zeichen:='+';
     if zufall= 5 then zeichen:='~';
     if zufall= 6 then zeichen:='*';
     if zufall= 7 then zeichen:='#';
     if zufall= 8 then zeichen:='w';
     if zufall= 9 then zeichen:='d';
     if zufall= 10 then zeichen:='b';
     if zufall= 11 then zeichen:=' ';
     if zufall= 12 then zeichen:=']';
     if zufall= 13 then zeichen:='3';
     if zufall= 14 then zeichen:='|';
     if zufall= 15 then zeichen:='2';
     write(datei,zeichen); // Fehlermeldung [Error] Unit1.pas(58): Incompatible types: 'procedure, untyped pointer or untyped parameter' and 'String'
// wenn ich das nehme: writeln(datei,zeichen); kommt das: [Error] Unit1.pas(58): Illegal type in Write/Writeln statement
    end;
   closefile(datei);
  end;
 deletefile(form1.verzeichnis.text);
end;
Die rufe ich wie folgt auf:

Delphi-Quellcode:
procedure TForm1.loeschenClick(Sender: TObject);
begin
 assignfile(datei,verzeichnis.text);
 reset(datei);
 dateiUeberschreiben(verzeichnis.text,filesize(datei));
 closefile(datei);
end;
Was mache ich falsch?
  Mit Zitat antworten Zitat
Benutzerbild von Daniel B
Daniel B

Registriert seit: 27. Okt 2005
Ort: Dachau
453 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Fehler bei write / writeln in eine Datei

  Alt 26. Dez 2005, 08:23
1. write(datei,zeichen);, zeichen ist vom Typ String, musst du in PChar umwandeln.
2. assignfile(datei,verzeichnis.text);, sicher das es .text und nicht .txt heisst?
  Mit Zitat antworten Zitat
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#3

Re: Fehler bei write / writeln in eine Datei

  Alt 26. Dez 2005, 08:25
Verzeichnis ist vom Typ TEdit. der Pfad im Edit namens Verzeichnis stammt aus einem opendialog.

danke. aber wie wandel ich char in string? chartostr ... muss ich mal teten ^^
  Mit Zitat antworten Zitat
Benutzerbild von Daniel B
Daniel B

Registriert seit: 27. Okt 2005
Ort: Dachau
453 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Fehler bei write / writeln in eine Datei

  Alt 26. Dez 2005, 08:27
Dann gib doch dem Edit nen Namen womit man den auch erkennen kann...

PChar(zeichen);
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#5

Re: Fehler bei write / writeln in eine Datei

  Alt 26. Dez 2005, 08:27
Zitat:
danke. aber wie wandel ich char in string? chartostr ... muss ich mal teten ^^
PChar('string');
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Fehler bei write / writeln in eine Datei

  Alt 26. Dez 2005, 08:43
1.
Du brauchst deinen String nicht in einen PChar verwandeln, da write sehr wohl auch Shortstring und String akzeptiert.

2.
In deiner Procedure "DateiUeberschreiben", schreibst Du "assign(datei,pfad);" Was soll das denn bringen?

Wäre AssignFile(datei, Pfad) nicht zielführender?

3.
In deiner Loeschen Procedure solltest Du bevor due die Ueberschreiben Procedure aufrufst, CloseFile aufrufen und die davor dir die Größe der Datei in einer Variablen speichern.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Fehler bei write / writeln in eine Datei

  Alt 26. Dez 2005, 08:47
Hai Christopher,

mal unabhängig von deinem Problem. Was hälst Du denn von diesem Ansatz um deine ganzen IF-Then Abfragen zu verhindern?
Delphi-Quellcode:
procedure DateiUeberschreiben(pfad: string; groesse: integer);
const
  myChars: array[1..15] of Char =
    ('@', 't', 'ö', '+', '~', '*', '#', 'w', 'd', 'b', ' ',
    ']', '3', '|', '2');
var
  i, a : integer;
  zeichen: Char;
begin
  for a := 1 to 10 do
  begin
    Assign(datei, pfad);
    rewrite(datei);
    for i := 1 to groesse do
    begin
      zeichen := myChars[random(15) + 1];
      .
      .
      .
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Fehler bei write / writeln in eine Datei

  Alt 26. Dez 2005, 09:15
Hallo Christopher,

Delphi-Quellcode:
var
  datei: TextFile;
wahrscheinlich hast du datei mit dem Typ file deklariert.

Weihnachtsgrüße vom marabu
  Mit Zitat antworten Zitat
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#9

Re: Fehler bei write / writeln in eine Datei

  Alt 26. Dez 2005, 09:39
Zitat von marabu:
Hallo Christopher,

Delphi-Quellcode:
var
  datei: TextFile;
wahrscheinlich hast du datei mit dem Typ file deklariert.

Weihnachtsgrüße vom marabu
Nein, ich bae

datei: file

Alle anderen Vorschläge nehme ich gerne an. Ich wollte ja erstmal ganz simpel versuchen, eraser (dateien komplett löschen, dass man sie nicht mehr wiederfinden kann ) nachzuproggen. das war erstmal ein kleiner ansatz. falls ihr für mein programm ein paar ideen habt, könnt ihr ja sie gerne posten. Nich tdenken, dass das gleich in die freeware sparte kommt ^^, denn ich denke, mit meiner methode lassen sich trotzdem dateien wiederfinden.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: Fehler bei write / writeln in eine Datei

  Alt 26. Dez 2005, 10:28
Zitat von Chrissi91:
Zitat von marabu:
Hallo Christopher,

Delphi-Quellcode:
var
  datei: TextFile;
wahrscheinlich hast du datei mit dem Typ file deklariert.

Weihnachtsgrüße vom marabu
Nein, ich bae

datei: file
Doch, also hast du doch. ReadLn() und WriteLn() kannst du nur auf Textdateien anwenden und daher will er datei vom Typ TextFile haben - wie marabu schon richtig sagte. Und Write() sowie Read() wollen bei einem untypirisierten Dateitype (File) binärdaten, Strukturen etc haben und keine Strings. Ändere den Typ von Datei und es wird damit schonmal klappen.

Marabu hat genau das richtige genannt - genauer lesen...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:52 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