| Autor |
Beitrag |
Jojojoxx
      
Beiträge: 386
|
Verfasst: So 22.05.05 13:08
Hallo an alle! Bin neu hier!
Ich habe folgendes Problem. Ich möchte, dass man eine Datei per OpenDialog auswählen kann, diese Datei soll dann mit komplettem Pfad in einem Textfeld angezeigt werden. Das klappt auch, allerdings nur bei Dateien, die in dem selben Verzeichnis liegen, wie die Programm-Exe-Datei. Ansonsten schmeißt mir Delühi folgende Fehlermeldung an den Kopf:
Mein Code sieht folgendermaßen aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm2.Button2Click(Sender: TObject);
begin opendialog1.Execute;
edit2.text:=Opendialog1.filename; end; |
Danke für eure Hilfe!!!
mfg
Jojo
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
|
|
matze.de
      
Beiträge: 576
Win95, Win98 SE, WinXp Prof SP2
D7P, D8P, FPC2.0
|
Verfasst: So 22.05.05 13:59
Probiers ma so:
Delphi-Quelltext 1: 2:
| if OpenDialog1.Execute then showmessage(OpenDialog1.FileName); |
mfg matze 
_________________ si tacuisses, philosophus mansisses.
|
|
Jojojoxx 
      
Beiträge: 386
|
Verfasst: So 22.05.05 14:24
Hi!
Danke für deine Antwort, leider funktioniert es so immernoch nicht, hier ist mal mein jetziger Code:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm2.Button2Click(Sender: TObject);
begin if opendialog1.Execute then edit2.text:=Opendialog1.filename;
end; |
und
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm2.Edit2Change(Sender: TObject); var Datei: TextFile; Zeile1, Zeile2, Zeile3:String; begin
AssignFile(Datei, 'config.ini'); ReSet(Datei); ReadLn(Datei, Zeile1); ReadLn(Datei, Zeile2); ReadLn(Datei, Zeile3); CloseFile(Datei); if edit2.text=Zeile3 then button1.enabled:=False else button1.enabled:=True; end; |
Danke euch!
mfg
Jojo
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
|
|
Blackheart
      
Beiträge: 164
ME
D3Prof.-D6Standard
|
Verfasst: So 22.05.05 14:59
Also dein Code stimmt ! Was hast du denn in deiner Datei in der Dritten Zeile zu stehen.
Du solltest mal den Kompletten Pfad der im Edit steht in die Dritte zeile deiner Datei schreiben dann klappts auch.
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 22.05.05 14:59
Dann liegt der Fehler nicht am OpenDialog, sondern deine zweite Prozedur findet die Datei "config.ini" nicht. Das hat IMHO nur zwei Ursachen:
1. Die Datei existiert nicht. Abhilfe: Mit FileExists (s. Hilfe) prüfen
2. Du hast vergessen, den Ordner der Datei anzugeben, denn durch die Benutzung des OpenDialogs ändert sich das Arbeitsverzeichnis, und wenn ich raten darf: Deine "config.ini" liegt im gleichen Ordner wie dein Delphiprogramm.
Versuche es bitte mit beiden Lösungen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| if not FileExists(ExtractFilePath(paramstr(0)) + 'config.ini') then exit;
{$I-} AssignFile(Datei, ExtractFilePath(paramstr(0)) + 'config.ini');
CloseFile(Datei); {$I+} |
|
|
Jojojoxx 
      
Beiträge: 386
|
Verfasst: So 22.05.05 15:29
Hi!
Achso, das kann natürlich sein. Aber wie kriege ich denn das Verzeichnis raus, in dem meine Projektdatei (also die Exe) läuft, kann ja immer unterschiedlich sein und ich will da ja auch kein festes Verzeichnis angeben...
Gibts da eine Möglichkeit das herauszufinden???
Jojo
|
|
rossinie
      
Beiträge: 19
|
Verfasst: So 22.05.05 15:32
wenn du das verzeichnis rausfinden willst, wo die datei liegt, die grad asugeführt wird dann ists logischer weise immer das
verzeichnis = './'
=)
|
|
Jojojoxx 
      
Beiträge: 386
|
Verfasst: So 22.05.05 15:54
Hi!
Mhh, aber irgendwie klappt das bei mir nicht, wo liegt denn dann hier der Fehler??
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm2.Edit2Change(Sender: TObject); var Datei: TextFile; Zeile1, Zeile2, Zeile3:String; begin AssignFile(Datei, './config.ini'); ReSet(Datei); ReadLn(Datei, Zeile1); ReadLn(Datei, Zeile2); ReadLn(Datei, Zeile3); CloseFile(Datei); |
Ich will auf die Datei "config.ini" zugreifen, die im Programmverzeichnis liegt...
mfg
Jojo
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt.
|
|
rossinie
      
Beiträge: 19
|
Verfasst: So 22.05.05 15:56
ersetz:
AssignFile(Datei, './config.ini');
durch:
AssignFile(Datei, 'config.ini');
sollt aber keine änderung ergeben,muesste gehn
|
|
Jojojoxx 
      
Beiträge: 386
|
Verfasst: So 22.05.05 16:03
Hi!
das Problem wenn ich AssignFile(Datei, 'config.ini'); schreib, dann findet er diese nicht, d.h. ich muss noch den Pfad zu meinem Programm angeben, da der aber ja imer anders sein kann muss ich den entweder auslesen lassen oder wie du gesagt hast als './' definieren, aber wie binde ich das dann richtig ein...
Jojo
|
|
StefanH
      
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: So 22.05.05 16:25
Jojojoxx hat folgendes geschrieben: | | ... d.h. ich muss noch den Pfad zu meinem Programm angeben, da der aber ja imer anders sein kann muss ich den entweder auslesen lassen ... |
hat MathiasSimmack doch schon geschrieben: ExtractFilePath(ParamStr(0))
_________________ "Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
|
|
Jojojoxx 
      
Beiträge: 386
|
Verfasst: So 22.05.05 16:33
Ohh, Sorry, hab ich übersehen!
So klappt es!
Danke euch!!!
mfg
Jojo
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 22.05.05 22:56
rossinie hat folgendes geschrieben: | | AssignFile(Datei, 'config.ini'); |
Womit er wieder bei seinem ursprünglichen, fehlerhaften Code angekommen wäre.
Warum hört hier eigentlich niemand auf mathias oder liest zu mindest seine Beiträge durch. Er hat erstens beschriebenm, was passiert und warum es nicht geht und hat, meiner Meinung nach, die einzig vernünftige Lösung präsentiert.
|
|
Jojojoxx 
      
Beiträge: 386
|
Verfasst: So 22.05.05 23:14
Hat doch alles geklappt, wie ich oben geschrieben habe...
Jojo
|
|