Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Speichern während des Ausführens (https://www.delphipraxis.net/200762-speichern-waehrend-des-ausfuehrens.html)

Szohei 22. Mai 2019 15:52

Speichern während des Ausführens
 
Hallo ich möchte wenn möglich, während ich mein Programm ausführe (Debug), gerne alle Änderungen, die der Nutzer an dem ausgeführten Projekt bzw. der Form unternimmt seperat speichern. (PS: Die gespeicherte Datei muss nur über Delphi geöffnet werden, brauch also kein besonderes Dateiformat (DelphiProjectFile))
Außerdem möchte ich dann dieses Projekt auch während des debuggen öffnen können. (In diesem Fall wird das alte natürlich geschlossen).
Vielen Dank für mögliche Lösungsvorschläge.
Ich bin auch gerne bereit von meiner ursprünglichen Idee abzukommen, falls es anders besser oder einfacher geht.
Hinweis: Bei der Ausführung kann der Nutzer die Eigenschaft TImage.Picture und einige Variablen ändern.

hoika 22. Mai 2019 17:04

AW: Speichern während des Ausführens
 
Hallo,
im Form ist ein Edit, der Nutzer gibt "Max" ein,
das Programm/Form wird beendet, neu gestartet und es soll "Max" im Edit stehen?

Ist es das, was du willst?

Szohei 22. Mai 2019 21:20

AW: Speichern während des Ausführens
 
Nein, es ist eher das Speichern von einer Variable, die ich nur im Quelltext verwende, die aber nirgendwo steht...

Luckie 22. Mai 2019 21:41

AW: Speichern während des Ausführens
 
Die wirst du wohl in einer Datei speichern müssen.

p80286 22. Mai 2019 22:01

AW: Speichern während des Ausführens
 
Zitat:

Zitat von Szohei (Beitrag 1432900)
Nein, es ist eher das Speichern von einer Variable, die ich nur im Quelltext verwende, die aber nirgendwo steht...

Also Du willst etwas speichern, was es nicht gibt?
Das ist zumindest ungewöhnlich.Könntest Du Dein Vorhaben nochmals erklären.

Gruß
k-H

Szohei 22. Mai 2019 22:08

AW: Speichern während des Ausführens
 
Die Variable gibt es schon. Ich benutze Sie unter anderem zum Ändern von TImage.Picture... Allerdings wird sie nicht in einem Edit oder Memo ausgegeben.

haentschman 23. Mai 2019 05:28

AW: Speichern während des Ausführens
 
Moin...8-)
Für mich klingt das nach...Ihr braucht ein Versionsverwaltungssystem! Damit kannst du die Änderungen am Quelltext, die andere Personen oder du verzapft haben, sehen um die ggf. zusammenzuführen. :thumb:
Zitat:

Bei der Ausführung kann der Nutzer die Eigenschaft TImage.Picture und einige Variablen ändern.
...wie soll das zur Laufzeit funktionieren? :gruebel:
Zitat:

Nutzer
Definiere Nutzer! Kollege, du selbst, der Nachbar oder ein Alien vom anderen Stern. :stupid:

Wie schon gesagt. Bevor wir weiter raten...mache mal ein Beispiel (in Stichpunkten...was du wann erwartest) :zwinker:

Rollo62 23. Mai 2019 06:43

AW: Speichern während des Ausführens
 
In dem Fall ist vielleicht das TMemIniFile angebracht ?

Mit
Delphi-Quellcode:
    ...
    Ini.WriteInteger( 'MeineSchoeneSektion', 'PictureNummer', MeineEigeneIntegerPictureNummer );
    ...
    MeineEigeneIntegerPictureNummer := Ini.ReadInteger(  'MeineSchoeneSektion', 'PictureNummer', -1 );
    if MeineEigeneIntegerPictureNummer >= 0 then
    begin
       DaWarSchonmalWasBrauchbaresGespeichert;
    end;

Luckie 23. Mai 2019 08:57

AW: Speichern während des Ausführens
 
Klingt so, als solle der Anwender Elemente auf der Form zur Laufzeit anpassen können und das soll dann beim nächsten Start erhalten bleiben. Das wiederum schreit für mich nach einer Konfigurationsdatei (Ini, XML, ...) oder Registry.

Moombas 23. Mai 2019 09:27

AW: Speichern während des Ausführens
 
Die Grundlegende Frage, die es scheinbar zu klären gibt ist wohl:

Wen definierst du als Nutzer?

Nutzer = Benutzer des fertigen Programms
oder
Nutzer = andere Programmierer
??

p80286 23. Mai 2019 11:09

AW: Speichern während des Ausführens
 
Ich vermute, daß er während einer Debugging-Session Werte ändern will, und diese Änderungen gleich speichern will.
Wenn ich mich richtig erinnere ist so etwas bei einigen Basic-Dialekten möglich.

Gruß
K-H

Luckie 23. Mai 2019 11:47

AW: Speichern während des Ausführens
 
Zitat:

Zitat von p80286 (Beitrag 1432933)
Wenn ich mich richtig erinnere ist so etwas bei einigen Basic-Dialekten möglich.

Das sind ja auch Interpreter. Da kann ich jeder Zeit anhalten und den Code ändern.

p80286 23. Mai 2019 12:42

AW: Speichern während des Ausführens
 
Zitat:

Zitat von Luckie (Beitrag 1432936)
Zitat:

Zitat von p80286 (Beitrag 1432933)
Wenn ich mich richtig erinnere ist so etwas bei einigen Basic-Dialekten möglich.

Das sind ja auch Interpreter. Da kann ich jeder Zeit anhalten und den Code ändern.

Soo deutlich wollte ich es nicht schreiben.

Gruß
K-H

Szohei 23. Mai 2019 13:24

AW: Speichern während des Ausführens
 
Also der Nutzer ist der Benutzer des Programms.

Klaus01 23. Mai 2019 13:27

AW: Speichern während des Ausführens
 
Zitat:

Zitat von Szohei (Beitrag 1432948)
Also der Nutzer ist der Benutzer des Programms.

und was hat der jetzt mit der debug session zu tun?

Grüße
Klaus

Moombas 23. Mai 2019 13:46

AW: Speichern während des Ausführens
 
Also möchtest du, das der eigentlicher Benutzer das Programm "verändert" und diese "Veränderungen" sollen dokumentiert werden für den Entwickler. Richtig?

In dem Fall solltest du jede Änderung z.B. in einer Ini-Datei niederschreiben. Da du dafür ja entsprechende Funktionen / Prozeduren ausführst muss das dann an diesen Stellen passieren.

Sherlock 23. Mai 2019 13:53

AW: Speichern während des Ausführens
 
Dein Nutzer sollte nie etwas mit dem Debugger zu tun haben.

Bitte versuch nochmal deine Anforderung zu formulieren, und tu bitte dabei so, als wären wir "janz dumm"

Sherlock

Pflaumi 15. Jun 2019 15:00

AW: Speichern während des Ausführens
 
Hallo,
vielleicht hilft dir dass weiter:
Code:
begin
a.SaveToFile(Datei-Pfad);
end;
Du musst die Variable (hier: a) mit dem SaveToFile "verbinden" und in Klammern den Dateiname.
Ich weiß nicht, welche Dephi-Version du hast (ich: Delphi7), aber bei mir heißt dann immer noch:
[Fehler] Unit1.pas(31): Record, Objekt oder Klassentyp erforderlich
Da komm ich jetzt leider auch nicht weiter (vielleicht jemand anders :wink: !).

Öffnen kannst du die Variable dann wieder mit:
Code:
begin
a.OpenFromFile(DateiName);
end;
Ich hoffe, dass hilft :thumb: !

PS: Den Datei-Typ (z.B. txt) musst du dazu schriben, wenn nicht, ist es nicht schlimm.
Windows zeigt die Datei einfach so ohne Kennung an (dass ist in diesem Fall nicht schlimm, oder?).
Du kannst aber auch eine eigene Kennung erfinden (aber wir wollen nicht so weit ins Detail gehen, wenn schon, dann schick ne' private Mail an mich).

Daniel 15. Jun 2019 17:58

AW: Speichern während des Ausführens
 
Pflaumi ... SaveToFile hat er doch schon in seinem Code.
Helfen wollen ist ja grundsätzlich gut, aber man muss auch realisieren, wo man helfen kann.

Luckie 15. Jun 2019 18:59

AW: Speichern während des Ausführens
 
Noch mal kurz zu den Fachbegriffen. Deine etwas missverständliche Benutzung verwirrt immer etwas was.

Als "debuggen" bezeichnet man die Tätigkeit einen Fehler im Programm zu suchen, indem man es zum Beispiel, Schritt für Schritt mittels des Debuggers durchgeht. Man kann sich dabei Variableninhalte angucken, gucken wi,e wo und warum ein Programm verzweigt, welche Programmteile abgearbeitet werden usw.

Was aber du meinst ist, dass du das Programm im kompilierten Zustand, also nur die fertige, ausführbare Datei, weitergeben willst. Also ohne Quellcode. Wobei, würdest du den Quellcode mitgeben, das dem Benutzer auch nicht weiter helfen würde, da er in er Regel damit nichts anfangen kann.

Luckie 15. Jun 2019 19:08

AW: Speichern während des Ausführens
 
Delphi-Quellcode:
//'Array type required' obwohl es als Array definiert ist
      Zahl1 := Zahl1 + 1;
Zahl1 ist nicht als Array-Typ deklariert, sondern als Integer. Siehe deine eigene Variablendeklaration im Prozedurkopf.

Ich würde das sowieso grundsätzlich anders angehen. Ich würde die Images in einer Objektliste ablegen vom Typ TImage. Vordem Speichern mittels FindComponente alle Images suchen und diese dann in die Objektliste ablegen.
Zum Speichern würde ich dann die Objektliste durchgehen und die benötigten Eigenschaften in eine Dateischreiben. Dabei kann man entweder das Ini-Dateiformat nehmen oder sich was eigenes ausdenken. Am einfachsten wäre aber wohl eine Ini-Datei zu nehmen, die dann so aussehen könnte:

Code:
[Image1]
Name=Wert
Left=Wert
Right=Wert
[Image2]
Name=Wert
Left=Wert
Right=Wert
[Image3]
Name=Wert
Left=Wert
Right=Wert
Oder man speichert die Objektliste, so wie sie ist, mittels eines Streams einfach binär ab. Da bin ich mir aber nicht sicher, ob Delphi da schon was Fertiges bietet in der ObjektList-Klasse.

Ah, scheint zu gehen: https://stackoverflow.com/questions/...t-in-a-tstream

Pflaumi 17. Jun 2019 13:38

AW: Speichern während des Ausführens
 
Ja, ich muss zugeben, dass ich nicht die ganzen Antworten gelesen hab.
Ich hab bloß nichts von SaveToFile und so gesehen und hab hald dann die Antwort geschrieben.

Jumpy 18. Jun 2019 07:48

AW: Speichern während des Ausführens
 
Zitat:

Zitat von Luckie (Beitrag 1434715)
Noch mal kurz zu den Fachbegriffen. Deine etwas missverständliche Benutzung verwirrt immer etwas was.

Als "debuggen" bezeichnet man die Tätigkeit einen Fehler im Programm zu suchen, indem man es zum Beispiel, Schritt für Schritt mittels des Debuggers durchgeht. Man kann sich dabei Variableninhalte angucken, gucken wi,e wo und warum ein Programm verzweigt, welche Programmteile abgearbeitet werden usw.

Was aber du meinst ist, dass du das Programm im kompilierten Zustand, also nur die fertige, ausführbare Datei, weitergeben willst. Also ohne Quellcode. Wobei, würdest du den Quellcode mitgeben, das dem Benutzer auch nicht weiter helfen würde, da er in er Regel damit nichts anfangen kann.

Vielleicht ist der gesuchte "Fachbegriff" an der Stelle "loggen" statt debugen. Sprich das Programm speichert gewisse Aktionen die der User macht in einer Logdatei, die man schon ansehen können soll, während der Nutzer nocht damit arbeitet.

Moombas 18. Jun 2019 08:17

AW: Speichern während des Ausführens
 
Zitat:

Zitat von Pflaumi (Beitrag 1434840)
Ja, ich muss zugeben, dass ich nicht die ganzen Antworten gelesen hab.
Ich hab bloß nichts von SaveToFile und so gesehen und hab halt dann die Antwort geschrieben.

Sorry aber wenn du nach einer Lösung suchst solltest du schon Aufmerksam deine Threads incl. der Antworten durchlesen. Manchmal bringt einem ein anderer Begriff auf die richtige Spur oder man erwartet den falschen Begriff.
Ansonsten kann es sein das dir nicht nur wichtige Informationen und Tipps flöten gehen, sondern die Leute dir auch irgendwann nicht mehr helfen ("der List die Antworten eh nicht").


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz