![]() |
Problem beim abspeichern in Datei
Hi folks!
Wir haben im Info-Unterricht n Hangman (Galgenmännchen) programmiert. Jetz soll sich das Prog die eingegebenen Wörter in iner Datei merken um sie evtl. später zufallsgesteuert als zu ratendes Wort einzulesen. Unser Lehrer hat uns dazu AssignFile,ReWrite,Write,Read und seek gegeben. Mein jämmerlicher Source dazu sieht so aus:
Delphi-Quellcode:
(Speichertyp wurde in "type" als String[14] deklariert.)
procedure TFrm_Hangman.speichern(a:Speichertyp);
begin assignfile(Datei,'woerter.dat'); rewrite(datei); write(datei,a); closefile(datei); end; Jetz will ich aber nat. nicht, dass der immer wieder die datei nueschreibt...wie erreich ichs, dass der die datei nur dann nueschriebt, wenns die auch gibt?mein versuch:
Delphi-Quellcode:
aber da krieg ich gesagt: "Dateizugrif verweigert."
procedure TFrm_Hangman.speichern(a:Speichertyp);
begin assignfile(Datei,'woerter.txt'); if not fileexists('woerter.txt') then rewrite(datei); write(datei,a); closefile(datei); end; Hoffe ihr könnt mir helfen... :dp: |
Re: Problem beim abspeichern in Datei
Wenn du nur anhängen willst, kuck dir mal in der Hilfe Append an. Desweiteren empfehle ich dir einen absoluten Pfad zur datei anzugeben. Das was du machts ist Roulette. ;)
|
Re: Problem beim abspeichern in Datei
Bei deiner 2. Prozedur wird die Datei, wenn sie vorhanden ist ja garnicht geöffnet!
Man macht des im allgemeinen so:
Delphi-Quellcode:
So hab ichs zumindest damals mit Turbo Pascal gelernt.
assignfile(f, 'datei.dat');
{$I-} reset(f); {$I+} if ioresult <> 0 then rewrite(f); write(f, a); closefile(f); gruß Mario |
Re: Problem beim abspeichern in Datei
Komisch, ich bin hier mit bisher immer ganz gut gefahren:
Delphi-Quellcode:
AssignFile(f, Filename);
{ if exits open it } if FileExists(Filename) then begin //FileMode := fmShareExclusive; Reset(f); end { if not rewrite it } else begin {$I-} Rewrite(f); |
Re: Problem beim abspeichern in Datei
Was wäre, wenn die Datei existiert, du aber keine Leserechte hast?
Ist zwar ne Spitzfindigkeit, aber ... EDIT: Gut, dann könnt man bei mir bringen, wenn die Datei nicht existiert und man keine Schreibrechte im Verzeichnis hat... |
Re: Problem beim abspeichern in Datei
Das kann ich auch. :mrgreen: Was passiert bei dir, wenn du keine Schreibrechte hast? :tongue: Also, es geht doch nur ums Prinzip, dass ich dafür keinen wasserdichten Code entwickle dürfte klar sein. darum hat sich der Programmierer dann noch selber zu kümmern.
|
Re: Problem beim abspeichern in Datei
wenn ich reset benutze wird die datei doch auch neugeschrieben...
|
Re: Problem beim abspeichern in Datei
Nein, es ist Roulette wo deine Datei abgespeicherrt wird, nämlich im gerade aktuellen Verzeichnis und das muss nicht ztwingen dein Anwendungsverzeichnis sein. Wo soll sie denn liegen? Im Programmordnder? Den Pfad deiner Anwending bekommst du mit ParamStr(0)
Datei vom Typ Struing[14]? Zeig mal Code, darunter kann ich mir nichts vorstellen. |
Re: Problem beim abspeichern in Datei
Liste der Anhänge anzeigen (Anzahl: 1)
IHR---HABT---ES---NICHT---ANDERS GEWOLLT!!!
[edit=thomasdrewermann]Code in den Anhang gepackt Mfg, thomasdrewermann[/edit] |
Re: Problem beim abspeichern in Datei
Zitat:
Und würdest du bitte aufhören, deine Psotings nachträglich komplett zu ändern? |
Re: Problem beim abspeichern in Datei
@Lucky: ich hab mich ja vorher schon berichtigt bzw selber getadelt. :stupid:
|
Re: Problem beim abspeichern in Datei
mal im ernst luckie...hast du vielleicht kummer?
das eine posting habbich angefangen zu schreiben, als du gerade rst genatwortet hattest und abgesendet, als schon viel mehr antworten da waren...die machten mein posting dann unsinnig...also habbichs geändert und das war nur EINMAL!!! back to topic: hab mir die hilfe durchgelsen und muss mich wundern...bei mir hat beides denselben Effekt. in der datei steht immer nur das letzte wort und n paar steuerzeichen... :-( |
Re: Problem beim abspeichern in Datei
Hallo!
Zitat:
Was das Überschreiben betrifft: Schau mal in der OH nach Seek - schließlich mußt Du die Position angeben, wo geschrieben wird! Was Du verwendest, ist eine typisierte Datei. Die ist wie ein ARRAY auf der Platte organisiert - man muß schon angeben, was wohin kommt. Ohne Positionierung wird "aktuelle Position + 1" genommen - beim Öffnen ist es das vor dem 1. Element. Desweiteren empfehle ich ein Tut zu typisierten Dateien! Gruß Dietmar Brüggendiek |
Re: Problem beim abspeichern in Datei
danke!
habs:
Delphi-Quellcode:
Vielen Dank! :dp:
procedure TFrm_Hangman.speichern(a:Speichertyp);
var i:integer; begin assignfile(Datei,'woerter.txt'); if fileexists('woerter.txt') then reset(datei) else rewrite(datei); i:=0; while EoF(datei)=false do begin seek(datei,i); i:=i+1; end; write(datei,a); closefile(datei); end; Jetz werd ich ma versuchen die dinger zufallsgesteuert wieder einzulesen... :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 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