Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Speichern ohne txt. (https://www.delphipraxis.net/121242-speichern-ohne-txt.html)

thiagojonas 24. Sep 2008 13:04


Speichern ohne txt.
 
Hallo Leute. Gibt es eine Möglichkeit z.B. den Inhalt einer ComboBox "intern" zu speicehrn. Also so speichern, dass man sie nicht laden muss(.txt,.dat,etc.)?
Weil das könnte ja jeder ran gehen und sie löschen. Es soll sozusagen nur über das Programm funktionieren.
Ich als Falsher, weiß dass das in Flash über SharedObjekt funktioniert(Flashcookies).
Geht das auch in Delphi? Wenn ja wo kann ich mehr darüber erfahren?
Danke :-D

BullsEye 24. Sep 2008 13:08

Re: Speichern ohne txt.
 
Nur halt die Items die du normal schon im OI eingibst.

Aber wenn du den Inhalt zur Laufzeit änderst, dann halt nur in einer INI File, ist aber eig das gleich wie ne Textdatei...

Medium 24. Sep 2008 13:14

Re: Speichern ohne txt.
 
Nun ja, egal wo und wie du Daten speicherst, sie werden immer von aussen mindestens entfernbar sein. Separate Dateien sind zunächst einmal einfach zu erwischen, aber auch Cookies sind nichts anderes. Die eigene .exe zu manipulieren geht durchaus über ein paar Umwege (Stichwort Resourcen), ist aber mindestens genau so unschön wie das ebenfalls zumindest technisch mögliche "vollmüllen" der Registry mit Anwendungsdaten. Beides zählt aber ganz klar zu den No-Gos in der Anwendungsentwicklung.
Um solche Dinge zu speichern gibt es in der Windowswelt den %APPDATA% Pfad, in den du deine Dateien speichern solltest - damit bist du dann auch endgültig auf der sicheren Seite, da jeder noch so eingeschränkte Benutzeraccount ein solches eigenes Verzeichnis besitzt und auf jeden Fall dort Schreibrechte hat. Das ist bei sllen anderen Varianten nicht gegeben, und dadurch werden sie vom No-Go zum No-Go mit grottigem Stil ;)

Und wer seine Daten mutwillig auf diese Weise zerschießen will... soll das dann eben bitte tun, aber nachher nicht weinen ;)

BullsEye 24. Sep 2008 16:10

Re: Speichern ohne txt.
 
Aber du solltest bedenken, das es bei vielen, gerade wenn es darum geht dein Programm zu testen, nicht gern gesehen ist, wenn du in der Registry bzw in irgendwelchen Pfaden speicherst, die nicht zum Anwendungsverzeichniss gehören.

Neutral General 24. Sep 2008 16:16

Re: Speichern ohne txt.
 
Ihr versteht ihn alle nicht oder?

Um den Inhalt einer ComboBox "intern" zu speichern musst du so vorgehen:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    Sicherung: TStringlist;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Stringliste muss erstellt werden bevor sie benutzt wird...
procedure TForm1.FormCreate(Sender: TObject);
begin
  Sicherung:= TStringlist.Create;
end;

// und wenn sie nichtmehr gebraucht wird, muss sie freigegeben werden.
procedure TForm1.FormDestroy(Sender: TObject);
begin
  Sicherung.Free;
end;

// "Speichern"
procedure TForm1.Button1Click(Sender: TObject);
begin
  Sicherung.Assign(ComboBox1.Items);
end;

// "Laden"
procedure TForm1.Button3Click(Sender: TObject);
begin
  ComboBox1.Items.Assign(Sicherung);
end;

// Combobox Leeren
procedure TForm1.Button2Click(Sender: TObject);
begin
  ComboBox1.Clear;
end;
Generell speichert man Dinge einfach in Variablen. Einen String, in einer Stringvariablen, einen Integer in einer Integervariable etc. Ganz viele Strings kann man entweder in einem Array of String speichern oder eben in einer TStringlist.

jokerfacehro 24. Sep 2008 16:21

Re: Speichern ohne txt.
 
ich weiß ja nicht worums dir genau geht, wenns dir darum geht intern zu speichern musste die exe ändern, wenns dir darum geht keine txts zu verwenden kannste deine combox direkt als datei speichern und so ganz leicht laden, kein füllen von datenfeldern, sondern einfach laden

BullsEye 24. Sep 2008 16:33

Re: Speichern ohne txt.
 
Vielleicht sollte er sein Problem doch etwas genauer beschreiben um bessere Hilfe zu bekommen!

Stringlist hin oder her, ist ja ganz gut, allerdings wird das nur zur Laufzeit gespeichert, genau wie Variablen, stürzt das Programm dann bsp mal ab ist alles weg. Kommt aber drauf an, für welche Zwecke er sein Programm benutzt.

Neutral General 24. Sep 2008 16:34

Re: Speichern ohne txt.
 
Achso... mhh kann doch sein, dass er es anders meint, als ich dachte :mrgreen:

thiagojonas 24. Sep 2008 16:41

Re: Speichern ohne txt.
 
Zitat:

Zitat von Neutral General
Ihr versteht ihn alle nicht oder?

Um den Inhalt einer ComboBox "intern" zu speichern musst du so vorgehen:


Generell speichert man Dinge einfach in Variablen. Einen String, in einer Stringvariablen, einen Integer in einer Integervariable etc. Ganz viele Strings kann man entweder in einem Array of String speichern oder eben in einer TStringlist.

Danke genau das meinte ich :-)

thiagojonas 25. Sep 2008 11:57

Re: Speichern ohne txt.
 
So habe das jetzt bewältigt :-) Funktioniert auch super!
Kann man das jetzt auch so "intern" speichern, dass wenn man das Programm schließt und es dann wieder öffnet und auf "Load" klickt, die Daten geladen werden?

Andi1985 25. Sep 2008 13:01

Re: Speichern ohne txt.
 
EDIT: egal.. gibt ja keien Löschfunktion

thiagojonas 25. Sep 2008 13:14

Re: Speichern ohne txt.
 
Wie egal, bei mir geht das nicht!

BullsEye 25. Sep 2008 13:55

Re: Speichern ohne txt.
 
Zitat:

Zitat von thiagojonas
Kann man das jetzt auch so "intern" speichern, dass wenn man das Programm schließt und es dann wieder öffnet und auf "Load" klickt, die Daten geladen werden?

Wie oben schon genannt, OHNE Registry, TXT oder INI bzw etwas Vergleichbarem ist das nicht möglich! Nachdem das Programm beendet wurde, sind deine Daten weg.
Am einfachsten empfehle ich dir das die INI.

Neutral General 25. Sep 2008 13:58

Re: Speichern ohne txt.
 
Was mir jetzt einfällt wäre evtl eine .bat Datei bei Programmende auszuführen, die diese Daten nach dem Programmende als Resource ins Programm einbindet. Ob sowas allerdings in der Praxis möglich ist, weiß ich nicht.

BullsEye 25. Sep 2008 14:54

Re: Speichern ohne txt.
 
selbst wenn, das ist wieder son rumgepfusche... aber keine sauber Lösung.

thiagojonas 25. Sep 2008 16:57

Re: Speichern ohne txt.
 
Hmmm... Da ist ja Blöd! Weil mein z.B. keine Daten wo keiner ran soll sicher, speichern und laden kann :(

Christian Seehase 25. Sep 2008 17:21

Re: Speichern ohne txt.
 
Moin Jonas,

Zitat:

Zitat von thiagojonas
Hmmm... Da ist ja Blöd! Weil mein z.B. keine Daten wo keiner ran soll sicher, speichern und laden kann :(

was heisst, es soll keiner rankommen können?
Selbst, wenn Du sie innerhalb der Exe speicherst, z.B. als Resource, kann man da rankommen.

Korrigiere mich bitte, wenn ich jetzt was Falsches sage, aber selbst die von Dir angesprochenen SharedObjects legen doch für die Konfiguration einzelne Dateien an (*.sol), an die man problemlos rankommen kann.

BullsEye 25. Sep 2008 17:29

Re: Speichern ohne txt.
 
Zitat:

Zitat von thiagojonas
Hmmm... Da ist ja Blöd! Weil mein z.B. keine Daten wo keiner ran soll sicher, speichern und laden kann :(

Was programmierst du denn, das die Daten so sicher sein müssen?

Also absollut sicher wirst du die Daten niemals machen, wie der Herr Seehase bereits gesagt hat, man kann die Daten wenn man will auch aus der EXE auslesen.
Aber du könntest es für die Enduser schwieriger machen.
Ich denke in diesem Fall wäre die Registry am besten, ist allerdings auch nicht 100% sicher. Nur kommt man da nicht ganz so einfach ran wie an eine INI die im Anwendungsverzeichniss liegt.
Du wirst dir dann aber nicht viele Freunde mit so einem Programm machen, das lass dir gesagt sein ;)

thiagojonas 25. Sep 2008 17:47

Re: Speichern ohne txt.
 
Hi Jungs. Ich programmiere eine Software für unseren Flugplatz. Ich bin Segelflieger. Und unsere Start(Startzeit,Landungszeit,Flugzeit,etc.) machen immonent alles dandschriftlich.

So ich lade die Namen Piloten in eine ComboBox über eine txt. Datei. Ich möchte halt einfach nicht das irgend so ein Dussel, die Datei bzw. den Inhalt der Datei beim rumspielen löscht und dann das Programm nicht mehr Ordnungsgemäß funktioniert.

Könnte man vielleicht die txt. so speichern, dass man ein Passwort bräuchte um sie zu bearbeiten, bzw. zu löschen, so ähnlich wie bei Excel?

DeddyH 25. Sep 2008 17:49

Re: Speichern ohne txt.
 
Seit wann braucht man ein Passwort, um eine Datei zu löschen?

thiagojonas 25. Sep 2008 17:52

Re: Speichern ohne txt.
 
Zitat:

Zitat von DeddyH
Seit wann braucht man ein Passwort, um eine Datei zu löschen?

Lies nochmal was ich geschrieben habe, ich glaube Du hast mich Missverstanden! :-D

Klaus01 25. Sep 2008 17:53

Re: Speichern ohne txt.
 
Guten Abend,

ich weiß nicht ob das Stichwort "verschlüsseln" schon gefallen ist?
Auch wäre es lohnenswert über eine kleine (embedded) Datenbank nachzudenken.
Dort kann man Zugriffsrechte für die User einrichten.

Grüße
Klaus

DeddyH 25. Sep 2008 17:54

Re: Speichern ohne txt.
 
Zitat:

Könnte man vielleicht die txt. so speichern, dass man ein Passwort bräuchte um sie zu bearbeiten, bzw. zu löschen, so ähnlich wie bei Excel?
Du hast Dich wohl eher falsch ausgedrückt ;)

thiagojonas 25. Sep 2008 17:55

Re: Speichern ohne txt.
 
Wieso denn, ich wollte nur wissen ob das möglich ist! :)

thiagojonas 25. Sep 2008 18:02

Re: Speichern ohne txt.
 
Zitat:

Zitat von Klaus01
Guten Abend,

ich weiß nicht ob das Stichwort "verschlüsseln" schon gefallen ist?
Auch wäre es lohnenswert über eine kleine (embedded) Datenbank nachzudenken.
Dort kann man Zugriffsrechte für die User einrichten.

Grüße
Klaus

GUte Idee! Aber es soll keiner Rechte haben!Es soll einfach keiner in der Lage zu sein den Dateiinhalt zu verändern,bzw. zu löschen!

taaktaak 25. Sep 2008 18:03

Re: Speichern ohne txt.
 
Moin, Moin Segelflieger.

Es ist sicher schwierig bis unmöglich die Daten wirklich vor Missbrauch, also unbefugtes Lesen oder mutwilliges Löschen zu schützen. Aber es stellt sich natürlich auch die Frage, wie hoch das Risiko einzuschätzen ist, dass so ein Missbrauch auch wirklich geschieht.

Mein Vorschlag hierzu wäre folgender:
  • Verwende eine INI-Datei, die ist für einen Programmier-Anfänger gut zu verwenden.
  • Verstecke die Datei (Attribut HIDE), dann kann sie auch nicht jeder Depp entdecken.
  • Zusätzlichen Schutz könnte eine ganz simple Verschlüsselung bieten. Gestern war der Simmel-Film im Fernsehen: Da wurde ein 25-facher Cäsar verwendet, der ist simpel zu programmieren.
  • Ausserdem ist natürlich eine regelmäßige Datensicherung vorzunehmen
Das sollten bereits ausreichende Massnahmen zum Schutz der Daten darstellen - ihr habt einen Segelflugplatz und keinen Nato-Fliegerhorst :wink:

DeddyH 25. Sep 2008 18:04

Re: Speichern ohne txt.
 
Die Datei lässt sich aber immer noch löschen.

[edit] Sry Ralph, der rote Kasten war im Urlaub [/edit]

taaktaak 25. Sep 2008 18:06

Re: Speichern ohne txt.
 
Na logisch. Aber vielleicht gibt es ja einen Bunker auf dem Fluplatz, dann muss der PC halt dort 'rein
:dancer:

thiagojonas 25. Sep 2008 18:08

Re: Speichern ohne txt.
 
Zitat:

Zitat von DeddyH
Die Datei lässt sich aber immer noch löschen.

Danke. Das mache ich! Hast Recht man sollte nicht übertreiben :-)

Ich will ja nicht blöd sein! :-D Aber könntest Du noch ein blickchen hierdrauf werfen :-D
http://www.delphipraxis.net/internal...=944316#944316

Danki! :lol:

Apollonius 25. Sep 2008 18:13

Re: Speichern ohne txt.
 
Warum verwendest du nicht die Datei-Zugriffskontrolle? Du kannst dem Benutzer das Löschen- und eventuell noch das Schreiben-Recht entziehen. Diese können zwar aktiviert werden, weil der Benutzer der Besitzer der Datei ist, aber darauf wird ein normaler Nutzer nicht unbedingt kommen.

BullsEye 25. Sep 2008 18:37

Re: Speichern ohne txt.
 
Wenn du einen Internet Zugang hast, könntest du auch bei jedem Programmstart die Datei von deinem Webserver runterladen lassen und dann in das Programm einbinden.
Wäre zwar kompliziert aber du hättest die Datei immernoch, wenn Sie jdn ausversehen bzw absichtlich löscht und am Ende, wenn das Porgramm geschlossen wird, lädst du die Textdatei wieder hoch. Ggf solltest du das so einrichten, das die alte gesichert wird.
Entweder bei jedem Upload der neuen Datei oder du selbst kopierst die aktuelle Datei jeden Tag zur Sicherheit.


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