Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Memo speichern (https://www.delphipraxis.net/129849-memo-speichern.html)

hansdieter11 26. Feb 2009 17:53


Memo speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hey alle zusammen :)

ich habe ein Delphi Problem (oh Wunder :mrgreen: )
ich programmiere grad ein programm in dem man in eine memo einen text schreiben kann,
der dann gespeichert wird wenn man auf einen button drückt, man kann diesen text auch wieder laden
und zählen lassen wieviele Zeilen es gibt :P
ich hab das ganze mal als datei angehängt wie weit ich schon gekommen bin... :)
so jetzt zu meinem eigentlichen problem:
es soll noch gefragt werden wo man die textdatei (memo) speichern will, sprich man soll den ordner usw auswählen können
und mit dem laden soll das natürlich genauso sein :P
mein lehrer meinte das geht mit dem befehl savedialog oder so etwas?! jedoch komme ich momentan nicht weiter..

es wäre super wenn ihr mir helfen könntet :)
freundliche grüße...

jaenicke 26. Feb 2009 17:58

Re: Memo speichern
 
Grundsätzlich sieht das z.B. so aus:
Delphi-Quellcode:
if SaveDialog1.Execute then
  Memo1.Lines.SaveToFile(OpenDialog1.FileName);
// EDIT:
Das muss natürlich SaveDialog1.FileName heißen.

Luckie 26. Feb 2009 17:58

Re: Memo speichern
 
Dann guck doch mal in der Komponentenpalette bei den Dialogen, was du da findest.

Meflin 26. Feb 2009 17:59

Re: Memo speichern
 
Das ist kein Befehl, sondern eine Komponente. Guck mal unter "Dialoge", da gibts TOpenDialog und TSaveDialog. Die kannst du einfach auf deinem Formular platzieren. Benutzen kannst du das dann so:
Delphi-Quellcode:
if OpenDialog1.Execute then
begin
Memo1.Lines.Clear;
DateiName := (OpenDialog1.Filename);
Memo1.LoadFromFile(DateiName);
end;

hansdieter11 26. Feb 2009 18:07

Re: Memo speichern
 
ah okay das ist eine komponente, so komm ich der lösung schonmal näher :P trotzdem meckert er noch rum.. was ist denn dieses execute für ne eigenschaft?!
unser lehrer neigt dazu einfach nur sachen aus seinem buch abzuschreiben, schade das man so den unterricht kaputt machen kann :(
könnte mir sonst jemand einfach mein programm soweit ergänzen? dann würde ich sehen wie das funktioniert :P
danke schonmal für die rückmeldungen :)

Satty67 26. Feb 2009 18:14

Re: Memo speichern
 
Meflin und jaenicke haben es doch schon wunderbar ergänzt. Ist sogar der fertige Code, musst nur noch die beiden Komponenten auf dein Formular ziehen und den Code per Copy&Paste einfügen

hansdieter11 26. Feb 2009 18:17

Re: Memo speichern
 
gut, und wofür steht das dateiname? bzw was muss ich da einsetzen? :P
danke schonmal :)

jaenicke 26. Feb 2009 18:18

Re: Memo speichern
 
Machs am einfachsten wie ich beim Speichern ganz oben, dann sind das auch nur zwei Zeilen.

mkinzler 26. Feb 2009 18:18

Re: Memo speichern
 
Zitat:

Zitat von hansdieter11
gut, und wofür steht das dateiname? bzw was muss ich da einsetzen? :P
danke schonmal :)

Ist eine Variable, kannst du auch weglassen:
Delphi-Quellcode:
Memo1.LoadFromFile(OpenDialog1.Filename);

hansdieter11 26. Feb 2009 18:59

Re: Memo speichern
 
okay danke, soweit alles gut nur jetzt bekomme ich ne fehler meldung
"undefinierter bezeichner: LoadFromFile"
und
"verwendete uni1 kann nicht complimiert werden" oder so, weiß jemand von euch wodran das liegt? :P sonst häng ich das ganze nochmal als anhang dran

danke :)

Andreas L. 26. Feb 2009 19:01

Re: Memo speichern
 
Zitat:

Zitat von hansdieter11
okay danke, soweit alles gut nur jetzt bekomme ich ne fehler meldung
"undefinierter bezeichner: LoadFromFile"
und
"verwendete uni1 kann nicht complimiert werden" oder so, weiß jemand von euch wodran das liegt? :P sonst häng ich das ganze nochmal als anhang dran

danke :)

Delphi-Quellcode:
Memo1.Lines.LoadFromFile(..);

jaenicke 26. Feb 2009 19:22

Re: Memo speichern
 
Zitat:

Zitat von hansdieter11
okay danke, soweit alles gut nur jetzt bekomme ich ne fehler meldung
"undefinierter bezeichner: LoadFromFile"

Ein wenig Eigeninitiative könntest du schon zeigen statt nur blind zu kopieren.
Ich meine, ok, der Quelltext ohne Lines war hier gepostet worden, aber beim Speichern stand Memo1.Lines.SaveToFile. Dass bei Memo1.LoadFromFile das Lines fehlt, könnte man eigentlich auch selbst erkennen.
Außerdem gibts die Hilfe zu Delphi, wenn man den Punkt hinter Memo1 schreibt, kommen die möglichen Befehle, usw. ...

Da kann man auch selbst schon ein wenig weiterkommen.

An der Stelle empfehle ich auch mal den Crashkurs:
http://www.christian-stelzmann.de/in..._reloaded.html
http://www.christian-stelzmann.de/in...ials_crashkurs

hansdieter11 26. Feb 2009 19:27

Re: Memo speichern
 
ich probiere so viel eigeninitiative zu zeigen wie ich kann ;)
wir haben ab diesem jahr nur einen neuen informatik lehrer der es halt wie gesagt, so hab ich den eindruck, überhaupt nich drauf hab, ich mein er hat uns jetzt zum beispiel sowas hier aufgegeben und wir wussten noch nicht einmal das es diese dialoge als
komponent gibt, wir hatten davor message dialog und da gab es ja keinen komponenten...
auf dem thema mit den dialogen und so hab ich halt noch nicht sooviel erfahrung, wir haben bisher sehr viel mit canvas und timern usw gearbeitet...
das mit dem lines geb ich zu, da hätt ich auch selber drauf kommen können, :p
trotzdem danke an alle :)
das einzige was jetzt noch nicht funktioniert ist folgendes:
ich speicher das zum beispiel als "Test" ab, nur wenn ich es dann lade seh ich da zwar eine textdatei, aber die hat keinen namen... :p

Micha88 26. Feb 2009 19:28

Re: Memo speichern
 
Zitat:

Zitat von hansdieter11
gut, und wofür steht das dateiname? bzw was muss ich da einsetzen? :P
danke schonmal :)

Ich glaube, dass da noch gehörig an Tutorials / Grundlagen fehlen!

DeddyH 26. Feb 2009 19:29

Re: Memo speichern
 
Wie, die hat keinen Namen? Du meinst, keine Endung, oder? Dann speicher sie doch einfach als <Pfad>\Text.txt ab.

jaenicke 26. Feb 2009 19:32

Re: Memo speichern
 
Schau dir mal die Hilfe zu DefaultExt als Eigenschaft von TSaveDialog an. ;-)

hansdieter11 26. Feb 2009 19:37

Re: Memo speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
nein, ich hab nur nicht dran gedacht dass das eine variable ist weil vorher davon noch nicht die rede war...
warte ich häng dir nen screenshot an.

auch werden mir beim speichern keine dateitypen angeboten, muss ich da vielleicht noch was hinzufügen um das zu optimieren?
meinst du mit defaultExt zum beispiel sowas hier:
Delphi-Quellcode:
OpenDialog1.DefaultExt := '.txt';

DeddyH 26. Feb 2009 19:41

Re: Memo speichern
 
Das stellst Du in der "Filter"-Eigenschaft des Dialogs ein.

jaenicke 26. Feb 2009 19:43

Re: Memo speichern
 
Wie geht das denn? Irgendeinen Namen muss die Datei ja haben. Was hast du denn in den Speicherndialog als Name eingegeben und was steht in der Zeile mit SaveToFile drin? Das wie oben? Dann müsste es aber eigentlich klappen.

Und was die Typenanzeige angeht sehe ich schon hat DeddyH schon was geschrieben.

hansdieter11 26. Feb 2009 19:48

Re: Memo speichern
 
das mit dem filter hab ich hinbekommen, danke :)

ich hab das genommen was auf der ersten seite des themas von dir und meflin geschrieben wurde ..

Satty67 26. Feb 2009 19:56

Re: Memo speichern
 
Vielleicht postest Du nochmal hier den Code ab
Delphi-Quellcode:
procedure TForm1.BitBtn1Click
damit wir das prüfen und Dich benoten ähh korrigieren können.

jaenicke 26. Feb 2009 19:57

Re: Memo speichern
 
Naja, aber dann wird exakt die Eingabe aus dem Dialog als Dateiname verwendet. Egal ob der Filter gesetzt ist, das ist nur nebenbei nett.

Klappt denn auch das Speichern jetzt richtig?

hansdieter11 26. Feb 2009 20:02

Re: Memo speichern
 
klappt alles, und das programm schmiert ab wenn man zeichen wie " / \ * < > usw in der memo benutzt, aber ich denke das ist normal? :P

das einzige ist halt wie gesagt das der name unter dem ich das programm abspeichere nicht übernommen wird und die textdatei gar keinen namen hat wie man auf dem screen sieht :mrgreen:

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
     IF SaveDialog1.Execute
     THEN
        begin
        Memo1.Lines.SaveToFile(OpenDialog1.FileName);
        end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
     IF OpenDialog1.Execute
     THEN
        begin
        Memo1.Lines.Clear;
        Memo1.Lines.LoadFromFile(OpenDialog1.Filename);
        end;
end;

DeddyH 26. Feb 2009 20:04

Re: Memo speichern
 
Zitat:

Delphi-Quellcode:
IF SaveDialog1.Execute
     THEN
        begin
        Memo1.Lines.SaveToFile(OpenDialog1.FileName);
        end;

Schau mal genau, welche Dialoge Du da ansprichst/abfragst ;)

jaenicke 26. Feb 2009 20:07

Re: Memo speichern
 
@DeddyH: Und vergleich mal mit dem was ich als allererstes geschrieben hatte... :wall: :wall: :wall:

Das war mein Fehler beim schnellen Schreiben, aber das liegt am einfach blind kopieren, dass du das nicht gemerkt hast. ;-)

DeddyH 26. Feb 2009 20:09

Re: Memo speichern
 
Nenn es einfach "Easteregg" :lol:

Satty67 26. Feb 2009 20:15

Re: Memo speichern
 
Er antwortet gar nicht mehr, hoffe er war nicht mit der letzten Version zufrieden?

Zudem könnte sein, das er nicht sieht, was offensichtlich ist:
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  IF SaveDialog1.Execute
     THEN
        begin
        Memo1.Lines.SaveToFile({Open}SaveDialog1.FileName);
        end;

hansdieter11 26. Feb 2009 20:22

Re: Memo speichern
 
nein ich bin nicht zufrieden, jetzt krieg ich fehlermeldungen manchmal beim abspeichern von wegen datei kann nicht erstellt werden..
ich steig da grad nicht mehr durch, weil eben ging so noch alles und jetzt gar nicht mehr oO
trotzdem danke

taaktaak 26. Feb 2009 20:24

Re: Memo speichern
 
Na, dann schreib doch mal, wie die Fehlermeldung lautet.
Wir helfen doch weiter...

hansdieter11 26. Feb 2009 20:25

Re: Memo speichern
 
hab nochmal rumprobiert jetzt geht alles einwandfrei :P
danke :) :)

Forlan 26. Feb 2009 21:19

Re: Memo speichern
 
Vllt. noch interessant für dich...
Versuch doch mal deinen Buttons und Dialogen mal vernünftige Namen zu geben. ;)
Das macht das ganze übersichtlicher und außerdem sieht es IMHO auch viel besser aus^^
z.B.: mEingabe für Memo1 oder sowas :)


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