Autor Beitrag
hallo
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 450

WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
BeitragVerfasst: Do 08.07.04 13:33 
Hi,

wie kann ich die Programmkonfiguration im eigenem Programm speichern?
Ich will das ungefähr so machen: Ich habe ein Programm mit Einstellungen(z.B. username in einem Textfeld) und diese will ich IM Programm nach dem Beenden speichern.
D.H. wenn ich jetzt dieses Programm an einem anderen Comüputer starte, müssen die Einstellungen noch da sein.

Ich weiß, dass das mit den Antivirenprogrammen sehr problematisch wird, denn diese halten das dann warscheinlich für einen Virus weil sich die Datei dann halt verändert.

DANKE


Moderiert von user profile iconTino: Topic aus Sonstiges verschoben am So 11.07.2004 um 09:42

_________________
Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Do 08.07.04 13:42 
hallo hat folgendes geschrieben:
Ich weiß, dass das mit den Antivirenprogrammen sehr problematisch wird, denn diese halten das dann warscheinlich für einen Virus weil sich die Datei dann halt verändert.


Wurde hier zwar schon öfter erzählt, halte ich aber für groben Unfug. (Siehe Delphi-Compiler)

Das Problem ist dass du während das Programm läuft nicht schreibend darauf zugreifen kannst. Du könntest es aber so machen:

Du kopierst von der Datei die Bytes, die nicht zur Konfiguration gehören in eine Datei (irgendwas.bla)
In eine 2. die Konfiguration (conf.bla)
Du erstellst eine .bat-Datei mit folgendem Inhalt:

ausblenden Quelltext
1:
2:
3:
4:
copy /B irgendwas.bla + conf.bla dateiname.exe
del irgendwas.bla
del conf.bla
del %0.bat


Jetzt musst Du die datei (irgendwas.bat) ausführen und dein Programm normal beenden lassen. Die Einstellungen kannst du dann entweder per Stream oder über pbyte(oder sonstwas)($00400000 + dateigröße + index)^ lesen.
MartinPb
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 698



BeitragVerfasst: Do 08.07.04 13:52 
Hier hat mal einer behauptet, daß es Unit gibt mit der man die Ressource des eigenen Programms zur Laufzeit verändern kann. Ich weiß nicht ob es stimmt. Wenn es aber stimmt, dann gibt es sowas wie Ressourcestrings. Das sieht in etwa so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
resourcestring
  Var1 = 'Wert1';
  Var2 = 'Wert2';


Ein Ressourcestring ist eine Ressource. Wenn es also möglich ist eine Ressource zu ändern, dann kannst du auch den Wert des Strings ändern. Schon hast du die Werte im Programm gesichert.

Jetzt mußt du dich nur noch auf die Suche nach der Unit machen, die zur Laufzeit die Ressourcen verändern kann.

_________________
Gruß
Martin
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 08.07.04 22:31 
Motzi hat so eine Unit geschrieben.

@obschtkuche: Der Compiler wird sie vorher löschen. Es wird also keine Anwendung geändert, sondern nur neu erstellt. ;)
hallo Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 450

WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
BeitragVerfasst: Fr 09.07.04 13:06 
Wo gibt es diese Unit?

_________________
Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
h-design
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Sa 10.07.04 12:53 
Hi,
Ich hab auch nach diesem Problem lange gesucht, Turbopascal Bücher nicht wegwerfen, weil dort noch vieles beschrieben ist, was leider in der Delphi Hilfe nicht mehr auftaucht.
Hier die Lösung:
Erstelle erst im Unit-Kopf einen eigenen Record

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
TYPE
daten_ : RECORD
  a : Integer;
  b : Boolean;
  c : STRING[100];
end;
{So könnte dieser Record z.B.aussehen}

{Als nächstes die Deklaration im var Teil des Interface Kopfes}

var

daten : daten_;


implementation

{Jetzt ist es wichtig zu wissen, dass die folgenden Anweisungen nicht in Objektorientierten Prozeduren stehen, also schreib eine eigene Prozedure}

procedure speichern;
var
f : file of daten_;
datei : string;
begin

datei:='ini.dat';
assign(f,datei);
rewrite(f);
write(f,daten);
close (f);

end;


procedure lesen;
var
f : file of daten_;
datei : String;
begin
datei:='ini.dat';
assign(f,datei);
reset(f);
while not EOF(f) do begin
Read(f,daten); 
end;
close(f);
end;


Gruss Herbert


Moderiert von user profile iconPeter Lustig: Delphi-Tags hinzugefügt.
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Sa 10.07.04 14:38 
@Herbert: Du bist lustig...das ist so ziemlich das erste was man als Pascal/delphi programmierer kann. Das war aber nicht die frage. Er will daten in der laufenden exe speichern. Da sind dann die meisten mit ihrem latien am ende :wink:

_________________
mfg.
mâximôv