Delphi-PRAXiS
Seite 5 von 7   « Erste     345 67      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler bei REWRITE (https://www.delphipraxis.net/54630-fehler-bei-rewrite.html)

Chrissi91 8. Okt 2005 17:41

Re: Fehler bei REWRITE
 
Da ich das jetzt nur teste, reicht es ... Als näcstes programmiere ich ja, dass der nutzer den pfad unter optionen angeben kann ... also, der code is dann richtig ... schön ... thx

Chrissi91 8. Okt 2005 17:50

Re: Fehler bei REWRITE
 
Ich habe Windows unter C! Und ich habe den Code, wie im letzten Beitrag aufgeführt in meinem Programm ... Trotzdem kann er die Datei nicht finden:

Wenn die Datei leer ist
Wenn in der Datei schon Einträge drin sind ...

Den Code poste ich lieber nicht noch mal, sonst werde ich bald noch gesperrt ;)

Daniel 8. Okt 2005 18:07

Re: Fehler bei REWRITE
 
Was in solchen Fällen manchmal hilft, die Orientierung zurück zu gewinnen: Baue Dir erst aus den Editfeldern den Dateinamen zusammen und speichere ihn in einem String. Diesen String kannst Du dann mal begutachten und vermutlich den Fehler entdecken:

Delphi-Quellcode:
if fileexists('C:\WINDOWS\Desktop\'+edit1.text+' '+edit2.text+'.txt') then
würde dann beispielsweise zu:

Delphi-Quellcode:
filename:= 'C:\WINDOWS\Desktop\'+edit1.text+' '+edit2.text+'.txt';
ShowMessage( filename );
if fileexists( filename ) then
Nur als Anregung... ;-)

Chrissi91 8. Okt 2005 18:39

Re: Fehler bei REWRITE
 
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
procedure TForm2.BitBtn1Click(Sender: TObject);
var
datei, datei2, datei3, datei4, datei5, datei6: textfile;
hilf, pfad: string;
begin
if fileexists (ExtractFilePath(ParamStr(0))+'einstellungen.ini') then
begin
assignfile(datei6,ExtractFilePath(ParamStr(0))+'einstellungen.ini');
reset(datei6);
readln(datei6,pfad);
closefile(datei6);
end;
 if (combobox1.text='')or
    (edit1.text='') or
    (edit2.text='')then
      begin
       showmessage('Bitte geben Sie Anrede, Vor - und Nachnamen an, um den Datensatz speichern zu können.');
      end else
      begin
       if fileexists(pfad+edit1.text+' '+edit2.text+'.txt') then
        begin
         showmessage('Achtung! Es existiert schon ein Eintrag unter diesem Namen! Abbruch ...');
         form2.visible:=false;
         form1.Visible:=true;
         combobox1.Text:='';
         edit1.text:='';
         edit2.text:='';
         edit3.text:='';
         edit4.text:='';
         edit5.text:='';
         edit6.text:='';
         edit7.text:='';
         edit8.text:='';
         edit9.text:='';
         edit10.text:='';
         memo1.Text:='';
        end else
        begin
         assignfile(datei,pfad+edit1.text+' '+edit2.text+'.txt');
         rewrite(datei);
         writeln(datei,combobox1.text);
         writeln(datei,edit1.text);
         writeln(datei,edit2.text);
         writeln(datei,edit3.text);
         writeln(datei,edit4.text);
         writeln(datei,edit5.text);
         writeln(datei,edit6.text);
         writeln(datei,edit7.text);
         writeln(datei,edit8.text);
         writeln(datei,edit9.text);
         writeln(datei,edit10.text);
         writeln(datei,memo1.text);
         closefile(datei);
        end;
       if fileexists(pfad+'Eintrage.txt') then
        begin
         assignfile(datei2,pfad+'Eintrage.txt');
         reset(datei2);
         readln(datei2,hilf);
         closefile(datei2);
          if hilf = '' then
           begin
            deletefile(pfad+'Eintrage.txt');
            assignfile(datei3,pfad+'Eintrage.txt');
            rewrite(datei3);
            writeln(datei3,edit1.Text+' '+edit2.Text);
            closefile(datei);
           end else
           begin
            assignfile(datei4,pfad+'Eintrage.txt');
            append(datei4);
            writeln(datei4,edit1.Text+' '+edit2.Text);
            closefile(datei4);
           end;
        end else
        begin
         assignfile(datei5,pfad+'Eintrage.txt');
         rewrite(datei5);
         writeln(datei5,edit1.Text+' '+edit2.Text);
         closefile(datei5);
        end;

combobox1.Text:='';
edit1.text:='';
edit2.text:='';
edit3.text:='';
edit4.text:='';
edit5.text:='';
edit6.text:='';
edit7.text:='';
edit8.text:='';
edit9.text:='';
edit10.text:='';
memo1.Text:='';
form2.visible:=false;
form1.visible:=true;
end;
end;
1. Wenn Eintrage.txt nicht existiert, wird sie ganz korrekt erstellt. So weit, so gut ...
2. Wenn aber die Datei schon angelegt ist und einige Einträge drin sind, kann er die Datei nicht finden.
3. Wenn aber die Datei schon angelegt ist und noch keine Einträge drin sind, kann er die Datei nicht finden.

Bei 2. und 3. steht dort "I/0 Error 32". (oder so ähnlich)

Was habe ich denn jetzt schon wieder falsch gemacht ...

In der Datei einstellungen.ini steht: C:\WINDOWS\DESKTOP\VERSION 3\

Trotzdem noch mal im Anhang ... ;)

Sharky 8. Okt 2005 19:40

Re: Fehler bei REWRITE
 
Zitat:

Zitat von Daniel
... und für den Code dazu die Suche der DP. ;-)
Irgendwas mit "Special", "Folder" und "Location", wenn ich nicht irre.

Wenn für den Desktop-Ordner der Code nicht vorhanden ist
Delphi-Quellcode:
uses
  ShlObj;

function GetShellFolder(CSIDL: integer): String;
var
  pidl        : PItemIdList;
  FolderPath  : string;
  SystemFolder : Integer;
begin
  SystemFolder := CSIDL;
  if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then
  begin
    SetLength(FolderPath, max_path);
    if SHGetPathFromIDList(pidl, PChar(FolderPath)) then
    begin
      SetLength(FolderPath, strlen(PChar(FolderPath)));
    end;
  end;
  Result := FolderPath;
end;
Als CSIDL einfach CSIDL_DESKTOPDIRECTORY.

Aber das ist hier nicht das entscheidende Thema.

Als erstes solltest Du dir noch einmal Gedanken darüber machen wie Du die Adressdaten speichern möchtest. Wenn ich das richtig sehe versuchst Du für jeden Adresseintrag einen Datei zu erzeugen welche diese Namen hat: "Name Vorname.Txt".
In deiner "Index-Datei" speicherst Du dan alle Dateinamen welche Du erzeugt hast?
Was machst Du denn wenn zwei Menschen den selben Vor- und Nachnamen haben? Ja, das soll es geben ;-)

Auch wenn es sich jetzt hart anhört (ist aber nicht so gemeint) ->

Überlege Dir erst eine vernünftige Art die Daten zu speichern. Ich weiss; Du hast dir sicher Überlegt wie man es am einfachsten machen kann und bist auf diese Lösung gestossen. Aber 99% deiner Aufgabe als "Programmierer" besteht darin dir ein Konzept zu überlegen. Dies ist die wichtigste Arbeit. Das ganze dann in eine beliebige Sprache zu qutschen kann jeder der tippen kann ;-)

P.S.: Und Du solltest die Antworten hier im Forum genauer lesen. Auf die Problematik "Dateiname ohne Pfadangabe" habe ich schon um 17 Uhr ausführlich hingewiesen.

Wenn Du die Ratschläge die Du bekommst nämlich nicht annimmst kann es dir passieren das irgendwann keiner mehr Lust hat dir etwas zu erklären. :stupid: ;-)

Chrissi91 8. Okt 2005 19:54

Re: Fehler bei REWRITE
 
Die Ratschläge habe ich auch angenommen, ausprobiert und die Fehlermeldung kommt trotzdem ... Nun hast du mir freundlicherweise wieder einen Code gepostet, mit dem ich aber leider nichts anfangen kann ... Nichts gegen dich oder andere, aber was bringt es mir, wenn mir jemand einen Code gibt und ich diesen durch meinen ersetzen soll? Daraus lerne ich ja nichts. ;)
Sicherlich habe ich auch über ein besseres Konzept nachgedacht, nämlich alles in eine Datei zu speichern. Aber da kam ich auf mehr Probleme ;)

Ich verstehe noch nicht ganz, wo der Fehler in meinem geposteten Code liegt :(

Daniel G 8. Okt 2005 19:56

Re: Fehler bei REWRITE
 
Zitat:

Zitat von Chrissi91
Ich verstehe noch nicht ganz, wo der Fehler in meinem geposteten Code liegt :(

Dann zeig' uns doch mal das komplette Projekt.

Chrissi91 8. Okt 2005 19:58

Re: Fehler bei REWRITE
 
DA wird dir aber schlecht ;) Im Anhang oder als Delphi-Code? Der Anhang ist größer als 3 MB :(

Daniel G 8. Okt 2005 20:01

Re: Fehler bei REWRITE
 
Zitat:

Zitat von Chrissi91
DA wird dir aber schlecht ;) Im Anhang oder als Delphi-Code? Der Anhang ist größer als 3 MB :(

Öh... Du hast nicht zufällig einen Server, auf den du den packen könntest? Und sei es nur der freie Speicherplatz bei deinem ISP...

Chrissi91 8. Okt 2005 20:14

Re: Fehler bei REWRITE
 
Nein, aber schalte mal dein ICQ ein, bzw. guck mal rein ... ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 Uhr.
Seite 5 von 7   « Erste     345 67      

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