Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Text speichern (https://www.delphipraxis.net/117651-text-speichern.html)

vip11 22. Jul 2008 21:07


Text speichern
 
Hi alle
Ich benutze Delphi 7 und wollte als eins meiner ersten Programme mal nen Notizblock machen.
Ich hab nen Edit feld eingefügt und ne Variable für den Text darin gemacht und bezeichnet.
Ich würd gern wissen wie man den text speichern kann?

Danke im voraus.

Mein Quelltext:
Code:
unit save;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
save,;
begin
save:=StrToInt(Edit1.Text);


end;

end.
edit: ich weiß nicht ob dieses Thema hierher gehört. Ich wust nicht wohin sonst^^

lbccaleb 22. Jul 2008 21:20

Re: Text speichern
 
hallo und willkommen in der dp!! :dp: :dp:


in der hinnsicht würde ich dir raten, ein tmemo zu verwenden!
wenn du das auf der form erzeugt hast, kannst du den text dann so speichern:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin;
  memo1.lines.savetofile('deinedatei.txt');


end;

das was du hier geschriben hast, ergibt keinen sinn:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
save,; // hier willst du eine variable deklarieren, machst es dann aber nicht (wofür überhaupt??)
begin
save:=StrToInt(Edit1.Text);// hier willst du der nicht fertig erzeugten variable den text aus dem edit als zahl zuordnen (wofür das)


end;

nat 22. Jul 2008 22:15

Re: Text speichern
 
jo, ich würde an deiner stelle auch n memo benutzen.
erstens weil dein text dann auch mehrzeilig sein kann
(was bei ner notiz ja nich unbedingt schlecht ist) und
zweitens weil du den text dann wirklich sehr bequem
laden/speichern kannst mit
Delphi-Quellcode:
Memo.Lines.LoadFromFile(filename);
Memo.Lines.SaveToFile(filename);
speicher einfach jede notiz in ner eigenen text datei
z.B. in nem unterordner "notizen" oder so.
mußt dir halt nur gedanken über den dateinamen machen.
kannste nummerieren, oder das vll das erstellungs datum
nehmen, oder einen titel oder oder oder... :)
mußte gucken was in deienr anwendung am meisten sinn macht.

beim laden deiner anwendung mußte nur alle dateien
(vll noch nach entsprechender endung filtern) aus
dem unterordner laden und du hast alle deine notizen
im programm.

DP-Maintenance 23. Jul 2008 05:25

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Datenbanken" nach "Sonstige Fragen zu Delphi" verschoben.
Ist ja keine Datenbankfrage

vip11 23. Jul 2008 09:44

Re: Text speichern
 
Danke für die schnellen antworten,
tut mir leid das ich die frage in des falsche vorum geschrieben

Forlan 23. Jul 2008 10:20

Re: Text speichern
 
Zitat:

Zitat von vip11
Danke für die schnellen antworten,
tut mir leid das ich die frage in des falsche vorum geschrieben

das ist ja nen hammer deutsch... O.o :wall:

mo_greene 23. Jul 2008 11:41

Re: Text speichern
 
Ja in diesem Sinne: Willkommen im Delphi vorum :mrgreen: :cheers:

vip11 23. Jul 2008 14:15

Re: Text speichern
 
ja danke und sorry für die Rechtschreibung (war absicht^^)

ich hab noch ne kleine frage:

wie mach ich des wenn ich die notiz in nem extra ordner haben will?

Butch87 23. Jul 2008 14:23

Re: Text speichern
 
du erstellst dir mit
Delphi-Quellcode:
CreateDir('C:\Hallo');
einen neuen Ordner und speicherst dann die Datei(en) darin!!

vip11 23. Jul 2008 14:35

Re: Text speichern
 
danke

Die Muhkuh 23. Jul 2008 14:38

Re: Text speichern
 
Zitat:

Zitat von Butch87
du erstellst dir mit
Delphi-Quellcode:
CreateDir('C:\Hallo');
einen neuen Ordner und speicherst dann die Datei(en) darin!!

Wehe Du speicherst direkt auf C: :warn: :zwinker:

Schreib das ganze Zeugs lieber in den Anwendungsordner, wie Du an den kommst, sagt Dir die DP, wenn Du nach Hier im Forum suchenGetSpecialFolder suchst.

egon.kaschuba 23. Jul 2008 14:44

Re: Text speichern
 
:wiejetzt:

Hallo Vip11,

so kannste Speichern.

Delphi-Quellcode:
procedure TForm1.Speichernals1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
 Memo1.Lines.SaveToFile(SaveDialog1.FileName);  // Speichern als ..
end;
Gruß
- Egon

lbccaleb 23. Jul 2008 15:52

Re: Text speichern
 
Zitat:

Zitat von Die Muhkuh
Zitat:

Zitat von Butch87
du erstellst dir mit
Delphi-Quellcode:
CreateDir('C:\Hallo');
einen neuen Ordner und speicherst dann die Datei(en) darin!!

Wehe Du speicherst direkt auf C: :warn: :zwinker:

Schreib das ganze Zeugs lieber in den Anwendungsordner, wie Du an den kommst, sagt Dir die DP, wenn Du nach Hier im Forum suchenGetSpecialFolder suchst.

in der hinnsicht kannst du dir auch noch mal die befehle GetParamStr(0) und ExtractFilePath in der delphi hilfe ansehen ;-)

mkinzler 23. Jul 2008 15:55

Re: Text speichern
 
Zitat:

in der hinnsicht kannst du dir auch noch mal die befehle GetParamStr(0) und ExtractFilePath in der delphi hilfe ansehen Wink
Nein, ns Programmverzeichnis sollte man auch keine Daten ablegen

lbccaleb 23. Jul 2008 16:01

Re: Text speichern
 
[ot]
wieso das denn nicht??
[/ot]

nee aber so war es von mir auch gar nicht gedacht, so wie du es jaetzt verstanden hast, das sollte nur ein denkstoß sein, wie man den eigenpfad bekommt, damit er von dort seine ordnersystem weiter benutzen kann, deswegen hab ic hauch zitiert..

mkinzler 23. Jul 2008 16:04

Re: Text speichern
 
Zitat:

[ot]
wieso das denn nicht??
[/ot]
Sonst muss er zur Bedingung machen, das der Benutzer Adminrechte haben muss und unter Vista die UAC abgeschaltet sein muss.

Zitat:

das sollte nur ein denkstoß sein, wie man den eigenpfad bekommt, damit er von dort seine ordnersystem weiter benutzen kann
Er will schreiben, und dann ist dieser Pfad falsch

vip11 23. Jul 2008 23:23

Re: Text speichern
 
ich hab eifach geschrieben:
Code:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
CreateDir('Notizen');
end;

.
.
.

procedure TForm1.Button1Click(Sender: TObject);
begin
Text.lines.SaveToFile('Notizen\Notiz1.txt');
end;

p0w3r5tr34m3r 23. Jul 2008 23:34

Re: Text speichern
 
also jedes ma wenn du die maus auf der form bewegst, willst du n ordner erstellen? Den sinn musst du mir (und ich denke den anderen) ma erklären :-D

Butch87 24. Jul 2008 06:47

Re: Text speichern
 
auf die Antwort bin ich gespannt :mrgreen:
@mkinzler: wo sollte man denn sonst die Daten ablegen?!? In den "eigenen Dateien" oder wo?!?

mkinzler 24. Jul 2008 06:50

Re: Text speichern
 
Oder unter AllUsers usw. Den im Programmverzeichnis hat nur ein Admin Schreibrechte. Ab Vista mit UAC muss auch der diesen Zugriff bestätigen, da Programme standardmässig nur mit Userrechten gestartet werden.

vip11 24. Jul 2008 08:12

Re: Text speichern
 
bei mir erstellts nur einen ordener und der bleibt
die dateien darin bleiben komischerweise auch erhalten :?:

ich weiß nicht warum aber er erfüllt den zweck einmal einen ordner zu erstellen und wenn einer da ist NICHT die txt dateien darin zu löschen

guidok 24. Jul 2008 08:18

Re: Text speichern
 
Zitat:

Zitat von vip11
bei mir erstellts nur einen ordener und der bleibt
die dateien darin bleiben komischerweise auch erhalten :?:

ich weiß nicht warum aber er erfüllt den zweck einmal einen ordner zu erstellen und wenn einer da ist NICHT die txt dateien darin zu löschen

Tut mir ja leid das sagen zu müssen, aber das ist schon ein ganz schlechter Programmierstil. Kann schon sein, dass es irgendwie geht, da CreateDir ein bereits bestehendes Verzeichnis nicht noch einmal erstellt, aber Tatsache ist, dass es bei jeder Mausbewegung versucht wird ein Verzeichnis zu erstellen. Man sollte sich schon ein bischen mehr Gedanken machen, bei welchem Ereignis man was machen möchte. Was du treibst ist völliger Blindflug.

In deinem Fall wäre wohl etwas wie OnCreate oder einfach ein SaveDialog die richtigere Wahl.

vip11 24. Jul 2008 08:33

Re: Text speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
:(
is ja noch mein erstes programm
wie wärs hiermit?
Code:
procedure TForm1.FormActivate(Sender: TObject);
begin
CreateDir('Notizen');
end;

guidok 24. Jul 2008 08:39

Re: Text speichern
 
Zitat:

Zitat von vip11
:(
is ja noch mein erstes programm
aber ich weiß nicht welches ereignis ich nehmen soll um einmalig einen ordener zu erstellen

Das Ereignis OnCreate des Formulars wird, wie der Name schon sagt, einmalig bei der Erzeugung deines Formulars aufgerufen, das ist ein guter Punkt um einmalig einen Ordner zu erstellen.

Abhängig von der Anwendung ist die Verwendung eines SaveDialog evtl. die bessere Wahl. Den findest du unter "Dialoge" in der Toolpalette. Schau dir auch mal Beitrag #12 dazu an.

vip11 24. Jul 2008 08:43

Re: Text speichern
 
wie ist den meine jetztige lösung?
und ich benutzt vista das unterstützt den typ von hilfedateien nicht mehr^^

Butch87 24. Jul 2008 08:43

Re: Text speichern
 
In diesem Kontext finde ich den SaveDialog überflüssig, da dem user ja egal ist, wo die Notizen gespeichert werden. Hauptsache sie werden ihm angezeigt...
letztendlich ist es natürlich dem Programmierer überlassen!!

Zitat:

Zitat von vip11
ich benutzt vista das unterstützt den typ von hilfedateien nicht mehr^^

versteh ich nicht :gruebel:

Für dein erstes Programm ist es ganz gut gelungen (das Formular ist sogar für Sehbehinderte angepasst) :thumb: , weiter so
Allerdings solltest du vor dem Laden einer Datei prüfen, ob diese vorhanden ist!! Dies machst du mit
Delphi-Quellcode:
FileExists
Zur Zeit kommt es nämlich beim Laden einer nicht gespeicherten Notiz zu einem Fehler!!

vip11 24. Jul 2008 15:47

Re: Text speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
der bug is mir auch schon aufgefallen aber ich wuste nicht wie ichs behebe

danke
hier neue version

lbccaleb 24. Jul 2008 16:58

Re: Text speichern
 
ich hab mir dein programm ebend mal angesehen, du solltest den buttons aussagekräftigere namen geben, denn man weiß ja gar nicht genau was wo passiert...

und ich würde dir auch von eher dazu raten, den ordner dann zu erstellen, wann auch deine daten gespeichert werden...

edit:

denn wozu nen ordner erstellen, wenn der user das programm nur einmal startet und nie wieder benutzt und nie was gespeichert hat?? dann ist der erstellte ordner in deinem fall überflüssig, und umsonnst erstellt, also nur dann erstellen, wenn er auch gebraucht wird

[ot]
das find ich zb ist auch ein unding bei vielen neuen spielen... es wird einfach der komplette igene dateien ordner mit irgendwelchen maps, mods, level usw ordner zugeknallt, das ist auch nciht sonderlich schön, also wieso den mist nachmachen??
[/ot]

Cyf 24. Jul 2008 19:36

Re: Text speichern
 
Edit]Ups... Bezug:

Zitat:

[ot]
wieso das denn nicht??
[/ot]
Genauso schlecht, du kannst nichtdavon ausgehen das du im Programmordner (der ja oft in Programme liegt) Schreibrechte hast. Daher gehört sowas in die Anwendungsdaten (nicht zum lesen durch Benutzer gedacht, Einstellungen (besser Registry) etc.) oder Eigene Dateien bzw. die entsprechenden Ordner für alle Benutzer. Zumindest von der Theorie her...

lbccaleb 24. Jul 2008 19:40

Re: Text speichern
 
Zitat:

Zitat von Cyf
Edit]Ups... Bezug:

Zitat:

[ot]
wieso das denn nicht??
[/ot]
Genauso schlecht, du kannst nichtdavon ausgehen das du im Programmordner (der ja oft in Programme liegt) Schreibrechte hast. Daher gehört sowas in die Anwendungsdaten (nicht zum lesen durch Benutzer gedacht, Einstellungen (besser Registry) etc.) oder Eigene Dateien bzw. die entsprechenden Ordner für alle Benutzer. Zumindest von der Theorie her...

ist das auf meinen post bezogen??

genau wo ich gefragt hab, hast du editiert.. ;-)

p80286 24. Jul 2008 21:18

Re: Text speichern
 
Zitat:

wieso das denn nicht?
Weil, wenn ich als Benutzer Daten abspeichere, dann will ich auch wissen wo MEINE Daten liegen.
Meiner Meinung nach haben Nutzdaten in einem Programmverzeichnis nichts verloren. Ausserdem soll es Installationen geben, da haben die Benutzer ihre Daten auf einem Netzlaufwerk liegen und die Programme legen lokal auf dem Rechner. Da wird der Arbeitsplatzrechner per Fernwartung betreut, wenn dann die lokalen Daten hops gehen, Pech gehabt!

Und was ist wenn ich eine neue Programmversion installiere? Das alte Verzeichnis löschen, neu installieren und ups weg sind die Daten. Oder vorher aus einem Konvolut von 20 Unterverzeichnissen die richtigen Dateien heraussuchen.
Das muß ja wohl nicht sein.

Daten und Programme sollten immer getrennt sein, alleine um einen vernünftigen Backup durchführen zu können. Oder soll jedes mal eine längst überholte Programmversion mit gespeichert werden?

Gruß
K-H

haentschman 24. Jul 2008 21:36

Re: Text speichern
 
Guten Abend...

...ich habe die exe aus Post #23 gestartet.
Zitat:

Weil, wenn ich als Benutzer Daten abspeichere, dann will ich auch wissen wo MEINE Daten liegen.
...ganz genau :roll:

...ich habe die Suche über die ganzen Platten bemühen müssen, um den Ordner "Notizen" zu finden. :gruebel:

... ansonsten weiter üben und lernen. Und vor allem gut gemeinte Tipps auch annehmen. 8)

mkinzler 24. Jul 2008 22:13

Re: Text speichern
 
Zitat:

[ot]
das find ich zb ist auch ein unding bei vielen neuen spielen... es wird einfach der komplette igene dateien ordner mit irgendwelchen maps, mods, level usw ordner zugeknallt, das ist auch nciht sonderlich schön, also wieso den mist nachmachen??
[/ot]

Martin
-Z.B. weil das eine Bedingung ist um das Games for Windows-Logo zu bekommen
-Man Probleme mit fehlenden Adminrechten umgeht
-die UAC-Virtualisierung verhindert
-das der saubere Weg ist
-Daten im Programmverzeichnis nix verloren haben
...

vip11 27. Jul 2008 18:44

Re: Text speichern
 
Zitat:

Zitat von haentschman
Guten Abend...

...ich habe die exe aus Post #23 gestartet.
Zitat:

Weil, wenn ich als Benutzer Daten abspeichere, dann will ich auch wissen wo MEINE Daten liegen.
...ganz genau :roll:

...ich habe die Suche über die ganzen Platten bemühen müssen, um den Ordner "Notizen" zu finden. :gruebel:

... ansonsten weiter üben und lernen. Und vor allem gut gemeinte Tipps auch annehmen. 8)

also eigentlich müsste in der neuen version der ordner Notizen in dem ordener der exe datei erstellt werden
aber trozdem danke

lbccaleb 27. Jul 2008 19:43

Re: Text speichern
 
na eigentlich will er genau das ja nicht ;-)
er möchte das du den in einem ordner speicherst, in dem auch normale benutzer zugriffsrechte haben..

Cyf 27. Jul 2008 20:31

Re: Text speichern
 
Zitat:

Zitat von vip11
Zitat:

Zitat von haentschman
Guten Abend...

...ich habe die exe aus Post #23 gestartet.
Zitat:

Weil, wenn ich als Benutzer Daten abspeichere, dann will ich auch wissen wo MEINE Daten liegen.
...ganz genau :roll:

...ich habe die Suche über die ganzen Platten bemühen müssen, um den Ordner "Notizen" zu finden. :gruebel:

... ansonsten weiter üben und lernen. Und vor allem gut gemeinte Tipps auch annehmen. 8)

also eigentlich müsste in der neuen version der ordner Notizen in dem ordener der exe datei erstellt werden
aber trozdem danke

Wenn ein Programm (ohne Manifest) unter Vista in einen Ordner speichern will, auf den der Benutzer keinen Schreibzugriff hat, wird dieser virtualisiert, eigentlich ist zwar einheitlich geregelt wohin, aber trotzdem kannst du dann erstmal das Suchen anfangen.

haentschman 27. Jul 2008 22:41

Re: Text speichern
 
...ich habe ja XP SP2 und mußte trotzdem suchen.

- ich vermute er speichert in CurrentDir, was bei mir zu dem Zeitpunkt auf Bagdad gerichtet war :-D

Nochmal: Besser Anwendungsdaten ins AllUsers oder Benutzerverzeichnis des aktuellen Benutzers ( je nach Aufgabe ) :thumb:

:hi:


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