Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Lazarus Fehler beim lesen einer Textdatei (https://www.delphipraxis.net/163434-lazarus-fehler-beim-lesen-einer-textdatei.html)

foerster7892 28. Sep 2011 20:02

Delphi-Version: 5

Lazarus Fehler beim lesen einer Textdatei
 
Ja hi wie im Titel beschrieben:

Delphi-Quellcode:
function SchluesselA(x:string):TISArray;
var TxtDatei:Textfile;
    Ss,ZS  :String;
    i, Zaehl:Integer;
begin
  AssignFile(TxtDatei, x);
  reset(TxtDatei);
  readln(TxtDatei, Ss);  //Run-Error(3)
  zaehl := 1;
  for i := 1 to length(Ss) do
    if Ss[i] = ' ' then inc(zaehl);

  setlength(SchluesselA, zaehl);
  ZS := '';
  Zaehl:=0;
  for i := 1 to length(Ss)do
  begin
    if Ss[i] = ' ' then
    begin
      SchluesselA[Zaehl] := StrToInt(ZS);
      inc(Zaehl);
      ZS := '';
    end
    else ZS := ZS + Ss[i];
  end;
  CloseFile(TxtDatei);
end;

procedure TForm1.Button1Click(Sender: TObject);
var Textpfad               :string;
    i                      :integer;
    Schluessel             :TISArray;
begin
  Form1.OpenDialog1.Execute;
  Textpfad:=OpenDialog1.Filename;
  Form1.OpenDialog1.Execute;
  Schluessel:=SchluesselA(OpenDialog1.Filename);
  for i := 1 to length(Schluessel) do
    Form1.Memo1.Lines.add(IntToStr(Schluessel[i]));

end;
Wäre dankbar wenn mir einer den Fehler erklären könnte ich versteh ihn nicht!
Das Verzeichnis existiert und es ist auch nicht im Zugriff eingeschränkt.

scrat1979 28. Sep 2011 20:12

AW: Lazarus Fehler beim lesen einer Textdatei
 
Gerade in einem anderen Forum gefunden:

Zitat:

Runtime error 3 would mean that the path is invalid. Make sure it really exists
Vielleicht hilft es Dir ja :)

himitsu 28. Sep 2011 20:47

AW: Lazarus Fehler beim lesen einer Textdatei
 
Ich wollte schon fragen, ob du mit der Zeile sicher bist
und es nicht doch an Reset liegt.


http://msdn.microsoft.com/en-us/libr.../ms681382.aspx



PS: Für das Funktionsergebnis würde ich dir als Tipp nahelegen, daß du statt SchluesselA lieber Result verwendest, innerhalb dieser Funktion.

foerster7892 28. Sep 2011 20:56

AW: Lazarus Fehler beim lesen einer Textdatei
 
lol
wenn ich die textdateien auf d:\ lege geht es aber wenn sie auf c:\ sind egal wo dann geht es generell nicht.

Warum ist das so?
ich nutze Windows 7

creed steiger 28. Sep 2011 21:30

AW: Lazarus Fehler beim lesen einer Textdatei
 
Run time error
3 Path not found
Reported by the directory handling routines when a path does not exist or is invalid. Also reported when trying to access a non-existent file.

http://www.freepascal.org/docs-html/user/userap4.html

lass dir mal mit showmessage anzeigen welchen Pfad du da übergibst und schau ob du da überhaupt Zugriff hast.

Luckie 28. Sep 2011 21:47

AW: Lazarus Fehler beim lesen einer Textdatei
 
Und kapsele das mal in einem try-except-Block, dann bekommst du auch eine entsprechende Fehlermeldung.

JamesTKirk 29. Sep 2011 08:58

AW: Lazarus Fehler beim lesen einer Textdatei
 
Um mal die Anmerkungen meiner Vorredner zu wiederholen: Lass dir mal bitte den Dateinamen ausgeben.

Ich habe deine
Delphi-Quellcode:
SchluesselA
-Funktion mal bei mir getestet und es hat funktioniert. Ich verwende auch Windows 7 und habe die Datei einmal als c:\test.txt und als c:\test\test.txt getestet. Das einzig interessante war, dass ich das erste Mal die Datei, welche ich per Notepad++ auf c:\ angelegt hatte, nicht öffnen konnte; die Datei war auch im Explorer nicht sichtbar, aber im Öffnen-Dialog von Notepad++. Als ich dann die Datei im Unterverzeichnis angelegt und rüberkopiert habe, hat's dann aber funktioniert. Ich vermute mal schwer, dass mir hier der Virtual File Store zugeschlagen hat :roll:

Weitere mögliche Ursache: Dein Dateiname enthält Umlaute. Die LCL-Komponenten, zu denen auch
Delphi-Quellcode:
TOpenDialog
gehört, geben nun jedoch UTF-8 kodierte Strings zurück, während die RTL Funktionen von Free Pascal mit der Kodierung des Systems (in Deutschland normalerweise CP-1252) arbeiten. Du solltest also einen Aufruf von
Delphi-Quellcode:
UTF8ToSys
oder
Delphi-Quellcode:
UTF8ToAnsi
vor den Aufruf von
Delphi-Quellcode:
SchluesselA
davorschalten. Dazu kannst du zum Beispiel deine
Delphi-Quellcode:
Textpfad
-Variable verwenden, welche du nicht mehr weiter zu verwenden scheinst.

Den ganzen letzten Absatz lege ich dir übrigens unabhängig vom eigentlichen Problem ans Herz, denn spätestens dann, wenn du eine Datei mit Umlauten oder ähnlichem auswählst wirds krachen.

Gruß,
Sven

foerster7892 1. Okt 2011 09:07

AW: Lazarus Fehler beim lesen einer Textdatei
 
so danke für die tips werde sie bald/gleich ausprobieren

so zu diversen Fehlern, ja ich weiß dass es nicht richtig funktionierte also das richtige einlesen etc. dass hab ich schon gefixt
das Problem mit dem öffnen besteht aber immer noch und nein ich hab die datei bei mir auf der Festplatte da bin ich mir sicher!

Und Probleme mit dem Namen gibt es bei mir auch nicht, also zumindest sind weder Sonderzeichen noch Umlaute drin. Die heißen nämlich zahlenfolge0, zahlenfolge1 ...

himitsu 1. Okt 2011 09:27

AW: Lazarus Fehler beim lesen einer Textdatei
 
Zitat:

Zitat von JamesTKirk (Beitrag 1127379)
Das einzig interessante war, dass ich das erste Mal die Datei, welche ich per Notepad++ auf c:\ angelegt hatte, nicht öffnen konnte; die Datei war auch im Explorer nicht sichtbar, aber im Öffnen-Dialog von Notepad++.

Ein normales Programm hat in C:\ und C:\Programme, C:\Windows, ... usw. eigentlich keine Schreibrechte, darum hat Windows diesen Schreibzugriff des Notepad++ virtuell umgeleitet.
Stichwort: VirtualStore

Da dein/dieses Programm scheinbar "schrottig" programmiert wurde, weil es versucht in Verzeichnisse zu schreiben, wo es nicht reinschreiben darf und da es nicht als Vista/Win7-Kompatibel deklariert ist, versucht Windows dennoch diese Schreibzugriffe virtuell (nur für dieses) zu erlauben, damit es nicht verreckt, wie z.B. viele andere Programme, welche dämlicher Weise immernoch versuchen in C:\Programme reinzuschreiben und damit eigentlich nicht mehr funktionieren würden, obwohl man ja eigentlich schon seit WinNT/2000 dort nicht reinschreiben sollte. :angle2:
(Ob du absichtlich oder das Programm "ausversehn" diesen Speicherplatz ausgesucht hat, ist für Windows ja nicht erkennbar)

Zitat:

Lass dir mal bitte den Dateinamen ausgeben.
Und verrate diese uns endlich mal.

Zitat:

UTF8ToSys oder UTF8ToAnsi
Hast du das auch mal ausprobiert?

foerster7892 1. Okt 2011 14:11

AW: Lazarus Fehler beim lesen einer Textdatei
 
C:\Users\MeinName\Desktop\Buchentschlüsslung\Zahle nfolgen\zahlenfolge3.txt
da liegen die Textdateien,//also der Pfad wird mir auch vom Programm ausgegeben
diese wurden auf einem anderen Computer erstellt ich hab sie nur irgendwann mal hier rübergezogen zum testen, also die sind hier gespeichert und wurden nicht weiter bearbeitet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 Uhr.
Seite 1 von 2  1 2      

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