![]() |
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
|
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 ;) |
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:
würde dann beispielsweise zu:
if fileexists('C:\WINDOWS\Desktop\'+edit1.text+' '+edit2.text+'.txt') then
Delphi-Quellcode:
Nur als Anregung... ;-)
filename:= 'C:\WINDOWS\Desktop\'+edit1.text+' '+edit2.text+'.txt';
ShowMessage( filename ); if fileexists( filename ) then |
Re: Fehler bei REWRITE
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
1. Wenn Eintrage.txt nicht existiert, wird sie ganz korrekt erstellt. So weit, so gut ...
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; 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 ... ;) |
Re: Fehler bei REWRITE
Zitat:
Delphi-Quellcode:
Als CSIDL einfach CSIDL_DESKTOPDIRECTORY.
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; 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: ;-) |
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 :( |
Re: Fehler bei REWRITE
Zitat:
|
Re: Fehler bei REWRITE
DA wird dir aber schlecht ;) Im Anhang oder als Delphi-Code? Der Anhang ist größer als 3 MB :(
|
Re: Fehler bei REWRITE
Zitat:
|
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. |
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