Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Frage zu LoadFromFile (https://www.delphipraxis.net/203957-frage-zu-loadfromfile.html)

Oldjoe37 9. Apr 2020 20:34

Delphi-Version: 5

Frage zu LoadFromFile
 
Frohe Ostertage - trotz alledem!

Selbstgestellte Übungsaufgabe eines Anfängers:
Ich habe zwei Textdateien mit je 140 Einträgen (HTML-Code,Farbnamen),
die ich erst in zwei Listboxen und dann in ein StringGrid übertragen will.
(Delphi 5 ohne Hilfedateien.)
Ich scheitere vermutlich daran, dass ich nicht weiß, in welcher Form in der Zeile
Listbox1.Items.LoadFromFile(OpenDialog1.Filename);
der Filename "HTML.txt" eingegeben werden muss.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
     f: TextFile;
     s: String;
     Filename: String;
begin
     Opendialog1.Filter:= 'Txt-Files (*.txt)|*.txt';
     if not OpenDialog1.Execute then EXIT;
     Listbox1.Clear;
     Filename:= 'HTML.txt';
     Listbox1.Items.LoadFromFile(OpenDialog1.Filename)
end;
Procedure wird fehlerfrei compiliert, aber Listbox bleibt leer.
"HTML.txt" liegt im selben Verzeichnis wie die Unit, Suchpfad ist eingestellt.

Bitte um Korrekturhinweise.

Luckie 9. Apr 2020 20:56

AW: Frage zu LoadFromFile
 
Gib den ganzen Pfad an.

Redeemer 9. Apr 2020 21:15

AW: Frage zu LoadFromFile
 
Du möchtest eine Datei mit hartgecodetem Pfad laden, lädst aber aus einer Eigenschaft von TOpenDialog, die zufällig gleich heißt und zufällig den richtigen Typ hat. Ich würde mal den TOpenDialog löschen und schauen, was mir angekreidet wird.

PS: Es gibt seit 2014 übrigens 148 CSS-Farbnamen, 141 ohne die beiden Schreibweisen von Grau als Hilfe für die Mitarbeiter von Hewlett Packard.

blawen 9. Apr 2020 21:27

AW: Frage zu LoadFromFile
 
Zitat:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
     f: TextFile;
     s: String;
     Filename: String;
begin
     Opendialog1.Filter:= 'Txt-Files (*.txt)|*.txt';
     if not OpenDialog1.Execute then EXIT;
     Listbox1.Clear;
     Filename:= 'HTML.txt';
     Listbox1.Items.LoadFromFile(OpenDialog1.Filename)
end;

Du gibst diverses an, welches Du in Deinem Codeschnipsel nicht verwendest und auch das Exit brauchst Du nicht wirklich.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Opendialog1.Filter:= 'Txt-Files (*.txt)|*.txt';
  if OpenDialog1.Execute
  then begin
    Listbox1.Clear;
    Listbox1.Items.LoadFromFile(OpenDialog1.Filename);
  end;
end;

Oldjoe37 10. Apr 2020 09:32

AW: Frage zu LoadFromFile
 
Danke für die schnelle Reaktion!
Alles Überflüssige entfernt.
Filename mit und ohne vollständigen Pfad unter Eigenschaften von OpenDialog eingetragen.
('HTML.txt' bzw. 'E:\DelphiProjekte\StringGrid\HTML.txt')
Button2 Eigenschaft OnClick geprüft.
TOpenDialog gelöscht. Exception: "Klasse TOpenDialog nicht gefunden." Weiter nichts.
Vereinfachte Procedure wird fehlerfrei compiliert, aber Listbox1 nicht gefüllt.

procedure TForm1.Button2Click(Sender: TObject);
begin
Opendialog1.Filter:= 'Txt-Files (*.txt)|*.txt';
if OpenDialog1.Execute Then
begin
Listbox1.clear;
Listbox1.Items.LoadFromFile(OpenDialog1.FileName);
end;
end;

Ich suche weiter!
Jürgen

Klaus01 10. Apr 2020 09:51

AW: Frage zu LoadFromFile
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 openDialog: TOpenDialog;
begin
  openDialog := TOpenDialog.create(nil);
  try
    opendialog.Filter:= 'Txt-Files (*.txt)|*.txt';
    if openDialog.Execute then
      begin
        Listbox1.Clear;
        Listbox1.Items.LoadFromFile(openDialog.Filename);
     end;
  finally
    openDialog.free;
  end;
end;
Grüße
Klaus

DieDolly 10. Apr 2020 09:52

AW: Frage zu LoadFromFile
 
Zitat:

TOpenDialog gelöscht.
Löschen ist nicht gleich Löschen.
Hast du die visuelle Komponente auf dem Formular gelöscht oder einfach alle Vorkommen im Code?

p80286 10. Apr 2020 11:08

AW: Frage zu LoadFromFile
 
Zitat:

procedure TForm1.Button2Click(Sender: TObject);
begin
Opendialog1.Filter:= 'Txt-Files (*.txt)|*.txt';
if OpenDialog1.Execute Then
begin
Listbox1.clear;
Listbox1.Items.LoadFromFile(OpenDialog1.FileName);
end;
end;
Was hast Du gelöscht?

Fang erst einmalmit der Minimallösung, die schon beschrieben wurde an.
Code:
procedure TForm1.Button2Click(Sender: TObject);
begin
Listbox1.clear; // das ist überflüssig!
Listbox1.Items.LoadFromFile('vollständigerDateiname');
end;
Gruß
K-H

Amateurprofi 10. Apr 2020 11:33

AW: Frage zu LoadFromFile
 
Zitat:

Zitat von Luckie (Beitrag 1461734)
Gib den ganzen Pfad an.

Wenn OpenDialog.Execute True zurückgibt, steht in OpenDialog.FileName der komplette Dateipfad.

Amateurprofi 10. Apr 2020 11:37

AW: Frage zu LoadFromFile
 
Zitat:

Zitat von Oldjoe37 (Beitrag 1461750)
Danke für die schnelle Reaktion!
Alles Überflüssige entfernt.
Filename mit und ohne vollständigen Pfad unter Eigenschaften von OpenDialog eingetragen.
('HTML.txt' bzw. 'E:\DelphiProjekte\StringGrid\HTML.txt')
Button2 Eigenschaft OnClick geprüft.
TOpenDialog gelöscht. Exception: "Klasse TOpenDialog nicht gefunden." Weiter nichts.
Vereinfachte Procedure wird fehlerfrei compiliert, aber Listbox1 nicht gefüllt.

procedure TForm1.Button2Click(Sender: TObject);
begin
Opendialog1.Filter:= 'Txt-Files (*.txt)|*.txt';
if OpenDialog1.Execute Then
begin
Listbox1.clear;
Listbox1.Items.LoadFromFile(OpenDialog1.FileName);
end;
end;

Ich suche weiter!
Jürgen

Prüfe mal, ob bei Listbox1.Style eventuell einer der OwnerDraw-Stile angegeben ist.

TurboMagic 10. Apr 2020 12:25

AW: Frage zu LoadFromFile
 
Zitat:

Zitat von Redeemer (Beitrag 1461736)
Du möchtest eine Datei mit hartgecodetem Pfad laden, lädst aber aus einer Eigenschaft von TOpenDialog, die zufällig gleich heißt und zufällig den richtigen Typ hat. Ich würde mal den TOpenDialog löschen und schauen, was mir angekreidet wird.

PS: Es gibt seit 2014 übrigens 148 CSS-Farbnamen, 141 ohne die beiden Schreibweisen von Grau als Hilfe für die Mitarbeiter von Hewlett Packard.

Hallo,

ich würde gerne den teil des Zitats verstehen:
"ohne die beiden Schreibweisen von Grau als Hilfe für die Mitarbeiter von Hewlett Packard" ;-)

Grüße
TurboMagic

Daniel 10. Apr 2020 16:50

AW: Frage zu LoadFromFile
 
Wenn die Frage nach den CSS-Farben (kurz) beantwortet ist, bitte wieder die Kurve zum eigentlichen Thema nehmen.

Oldjoe37 10. Apr 2020 17:44

AW: Frage zu LoadFromFile
 
Liebe fleißige Helfer, ich komme jetzt erst dazu, Eure Beiträge durchzuarbeiten. Eine "höhere Macht"
hatte mich zur Gartenarbeit verurteilt.
Hallo Dolly: Ich habe alle Komponenten außer Listbox1, Button2 und Button1, sowie OpenDialog1 vom Form gelöscht,
um mich bei der Fehlersuche auf das Wesentliche zu konzentrieren.
An p80286: Gelöschtes siehe Antwort an Die Dolly. Unter 'vollständigerDateiname' habe ich es mit 'HTML.txt'
und auch mit kompletter Pfadangabe sowohl im Code, als auch im Objectinspektor versucht.
Unter ListBox1.Style steht "lbStandard".
An Amateurprofi: Wenn ich 'E:\DelphiProjekte\StringGrid\HTML.txt' in den Code schreibe, dann kommt eine
Fehlermeldung. Deshalb "Listbox1.Items.LoadFromFile(OpenDialog1.FileName) ;" und Datei mit Pfadangabe im #
Objektinspektor unter Eigenschaft "FileName" von mir eingetragen (nun weiß ich es besser!).
Last but not least, hallo Klaus: Ich habe deinen Quellcode akkurat übernommen und zum ersten mal
erschien ein OpenDialog und fragte mich nach der Textdatei. 'HTML.txt' eingegeben und die Listbox füllte sich.
Herzlichen Dank! Nun muss ich nur noch herausfinden und verstehen WARUM!?
Ich bedanke mich bei allen für ihre Hilfsbereitschaft und wünsche Gesundheit und Frohe Ostern.

Jürgen, trotz 82 unkaputtbar.

blawen 10. Apr 2020 19:05

AW: Frage zu LoadFromFile
 
Zitat:

Zitat von Oldjoe37 (Beitrag 1461777)
hallo Klaus: Ich habe deinen Quellcode akkurat übernommen und zum ersten mal
erschien ein OpenDialog und fragte mich nach der Textdatei. 'HTML.txt' eingegeben und die Listbox füllte sich.
Herzlichen Dank! Nun muss ich nur noch herausfinden und verstehen WARUM!?

Vermutlich hast Du etwas in die Eigenschaften der Listboxen eingetragen, welches zu diesem Effekt führte.

Mein Vorgehen:
- Listbox auf Formular ziehen
- OpenDialog auf das Formular ziehen
- Button auf das Formular ziehen
- Doppelklick auf den Button um in das "OnClick"-Ereignis zu kommen
- Im "OnClick"den (Minimal-) Code eintragen

und es funktioniert (zumindest bei mir ;-)

PS:
Das der OpenFile-Dialog sich nicht geöffnet hat, wäre schon in der Problembeschreibung hilfreich gewesen.

Oldjoe37 10. Apr 2020 19:29

AW: Frage zu LoadFromFile
 
Hallo Roland, ich wusste ja noch nicht einmal, dass sich OpenDialog öffnet und fragt. Aus den Beiträgen ging für mich nur hervor, dass ein Dateiname eingetragen werden muss.

Medium 11. Apr 2020 11:29

AW: Frage zu LoadFromFile
 
Alle *Dialog Komponenten sind... Dialoge eben. Etwas, wo ein Fenster aufpoppt, um den Nutzer Dinge einstellen und wählen zu lassen. Das ist deren alleiniger Existenzgrund ;)

Luckie 14. Apr 2020 19:03

AW: Frage zu LoadFromFile
 
Zitat:

auch das Exit brauchst Du nicht wirklich.
Dann sollte er aber auch das begin und end nicht vergessen einzufügen, sonst trifft das if nur auf die erste nachfolgende Zeile zu. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 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