Entwickler-Ecke

Dateizugriff - Daten speichern in Datei


hansg - Do 16.01.03 18:30
Titel: Daten speichern in Datei
Hallo,
ich möchte in einer Anwendung die Daten von Eingabefeldern, die Zustände von Checkboxen / Radiobuttons ablegen.
Zum speichern und lesen möchtem ich die bewährten Dialoge verwenden.
Ich habe mir schon überlegt die Ini Funktion zu verwenden, bin aber davon ab da das normale Text Files ergibt die jeder bearbeiten kann.
Da dies für mich absolute Neuland bitte ich um Hilfe von den Profis.


Gruß Hans


Delete - Do 16.01.03 19:48

Kuck dir mal das Ini-Datei-Tutorial auf dieser Seite an.


Raphael O. - Do 16.01.03 19:54

er will keine Ini's!!!, da die leicht veränderbar sind...

du kannst ja alles verschlüsseln und noch Unsinn mit in die Datei Packen...

müsstest nur für dein Programm was machen, dass es die richtigen sachen erkennen kann...

Fiji-Fighter


hansg - Sa 18.01.03 08:59

Hallo zusammen,
ich habe mich jetzt entschlossen doch die Ini Funktion zu nehmen.

Jetzt habe ich noch 2 Fragen dazu:

1. Wie kann ich bei einem SaveDialog verhindern das eine vorhandene Datei überschrieben wird bzw. eine Bestätigungsabfrage kommt.

2. Da ich einige Sachen nicht im Klartext ablegen will packe ich einigen Unsinn mit rein, gibt es eine Methode bestimmte Zeichen in einem String zu ersetzten? quasi die Umkehr Methode von copy(String,1,4);


Gruß Hans


Raphael O. - Sa 18.01.03 09:52

du kannst mit fileexists(string);:

Quelltext
1:
function fileexists(filename:string):boolean;                    


schauen ob die datei vorhanden ist...

den fragedialog hab ich gerade nicht parat...

schau mal in die Delphi Hilfe unter messages, da steht das drin...

werd auch mal selber mal schnell googeln..

Fiji-Fighter


Raphael O. - Sa 18.01.03 10:02

ups :oops: ...da gabs noch nen zweiten Punkt...

die prozedur heisst insert('das wird eingefügt',stringindeneingefügtwird,Stellehinterderdueinfügenwillst);

Quelltext
1:
procedure Insert(Source : string; var S : string; Index : Integer): string;                    


zur Abfrage:

Quelltext
1:
if MessageDlg('Willst du die Datei wirklich überschreiben???', mtConfirmation, [mbYes, mbNo], 0)=mryes then filespeichern;                    


glaube, dass müsste funktionieren... :wink:

Fiji-Fighter


hansg - Sa 18.01.03 10:15

@Fiji-Fighter,

das mit der Speichernabfrage habe ich gelöst :) , ich wollte im String keine Zeichen einfügen sondern bestimmte Zeichen ersetzten.

Oder habe ich das falsch verstanden :?:



Gruß Hans


Raphael O. - Sa 18.01.03 10:24

nee ich hab wohl nicht richtig durchgelesen :oops:

also, dann suchst du wohl stringreplace:

Quelltext
1:
2:
TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);
function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;


so was heisst das jetzt? hier mal ein Bsp:


Quelltext
1:
stringreplace(stringvar,wasersetztwerdensoll,wirddurchdashierersetz,[rfreplaceall]);                    


die Flags sind glaube ich selbsterklärend:
rfreplaceall:alle Vorkommen des gesuchten werden ersetzt
rfignorecas:groß und kleinschreibung nicht beachten

Fiji-Fighter


Delete - Sa 18.01.03 13:01

Kuck mal in den Optionen vom Savedialog, da kannst du einstellen, ob er fragen soll, ob eine existierende datei überschrieben werden soll.


hansg - Sa 18.01.03 17:27

Hallo,
ich glaube meine Frage wurde falsch verstanden.

Ich möchte aus einem String nur einzelne Zeichen ersetzten, nicht allle.

Beispiel:

Original String : 0123456789

ersetzter String: 0123056089

Gruß Hans


bis11 - Sa 18.01.03 21:19

Hi,

habe gerade kein Delphi zu Hand, suche mal in der Hilfe von Delphi nach dem Befehl "StringReplace".


Delete - Sa 18.01.03 21:26

bis11 hat folgendes geschrieben:
Hi,

habe gerade kein Delphi zu Hand, suche mal in der Hilfe von Delphi nach dem Befehl "StringReplace".

Wurde dieser äußerst interessante Vorschlag nicht schon mal wieter oben gemacht? :roll: