![]() |
Startzähler für Programm erstellen (Wichtig)
Hallo,
ich arbeite gerade an einem Programm,was mehrere Funktionen enthält. Will aber,dass die Funktionen nacheinander benutzbar sind.Die Funktionen habe ich alle fertig. Damit die Funktionen freigeschaltet werden,muss der jenige zum Beispiel 10 mal das Programm pro Tag hintereinander starten,dann schaltet sich eine Funktion frei. Ich würd das Programm noch bevor Wochenende zu ende ist fertig haben. Habe auch noch eine unbeantwortete Frage: ![]() Würde mich sehr freuen,wenn ihr mir schnell helft. Gruß GouJetir |
AW: Startzähler für Programm erstellen (Wichtig)
Anzahl der Starts irgendwo speichern - zum Beispiel in der Registry oder in einer Datei und beim nächsten Programmstart wieder auslesen.
|
AW: Startzähler für Programm erstellen (Wichtig)
Aber wie mach ich das?
Bin noch anfänger und ich will das so machen,dass das Programm die Starts einmal am Tag zählt.Nicht mehrmals an einem Tag. |
AW: Startzähler für Programm erstellen (Wichtig)
Zitat:
Möglicher Aufbau der Datei:
Code:
Manipulieren lässt sich das natürlich alles, aber das ist ein anderes Thema.
[Konfiguration]
Datum=10.09.2011 Starts=4 |
AW: Startzähler für Programm erstellen (Wichtig)
Danke für die schnelle Antwort.
Ich habe aber noch ein Problem. Ich hatte mich in einem anderem Delphi Forum angemeldet und da wusste ich nicht wie ich eine .ini schreibe und die haben mir ein Tutorial gezeigt,aber ich versteh es immernoch nicht und funktionieren tut es durch den Tutorial Codes auch nicht. Kann mir vielleicht jemand einen exakten Code für mein Programm schreiben,der also die Ini-Datei schreibt? Oder vielleicht ganz leicht erklärt,damit ich es versteh. Gruß GouJetir |
AW: Startzähler für Programm erstellen (Wichtig)
ein Beispiel:
Delphi-Quellcode:
procedure ReadOptionsIni;
var IniFile: TIniFile; begin IniFile := TIniFile.Create(Path + OptionsIniFileName); KOResultsPosition := 0;//TKOResultsPosition(IniFile.ReadInteger('Options', 'KOResultsPosition', 0)); ShowingTimePanels := IniFile.ReadBool('Options', 'ShowingTimePanels', True); GamePaperAuto := IniFile.ReadBool('Options', 'GamePaperAuto', True); GamePaperPictures := 0;//TGamePaperPictures(IniFile.ReadInteger('Options', 'GamePaperPictures', 0)); RecoverMinutes := IniFile.ReadInteger('Options', 'RecoverMinutes', 5); PlayerNameAbbr := IniFile.ReadInteger('Options', 'PlayerNameAbbr', 0); AutoSaveMinutes := IniFile.ReadInteger('Options', 'AutoSaveMinutes', 0); HelpMode := IniFile.ReadInteger('Options', 'HelpMode', 0); IniFile.Free; ... end; procedure WriteOptionsIni; var IniFile: TIniFile; begin IniFile := TIniFile.Create(Path + OptionsIniFileName); IniFile.WriteInteger('Options', 'KOResultsPosition', Integer(KOResultsPosition)); IniFile.WriteBool('Options', 'ShowingTimePanels', ShowingTimePanels); IniFile.WriteBool('Options', 'GamePaperAuto', GamePaperAuto); IniFile.WriteInteger('Options', 'GamePaperPictures', Integer(GamePaperPictures)); IniFile.WriteInteger('Options', 'RecoverMinutes', RecoverMinutes); IniFile.WriteInteger('Options', 'PlayerNameAbbr', PlayerNameAbbr); IniFile.WriteInteger('Options', 'AutoSaveMinutes', AutoSaveMinutes); IniFile.WriteInteger('Options', 'HelpMode', HelpMode); IniFile.Free; end; |
AW: Startzähler für Programm erstellen (Wichtig)
Hallo,
habe irgendwie den oberen Beitrag von Stahli nicht verstanden. Ich glaub das mit dem Täglichen Start lass ich weg,vielleicht merkt es keiner,dass man das Programm immer neu starten kann. :D |
AW: Startzähler für Programm erstellen (Wichtig)
Ich erzeuge nur eine Ini und schreibe und lese ein paar Daten daraus.
Hast Du Dir mal die Hilfe zur Ini angesehen? |
AW: Startzähler für Programm erstellen (Wichtig)
Ok ist egal mit Ini. Trotzdem Danke.
Stattdessen mach ich das jetzt einfach mit jedem Start zählen,die Zeit ist dann egal. Brauch denk ich auch noch ini,aber wird dann wohl leichter zu schreiben sein. So soll es ablaufen: 1.Starte Programm und Label1 steht auf 0 2.Schließe das Programm 3.Starte das Programm und Label1 steht auf 1 4.Schließe das Prograrmm 5.Starte das Programm und Label1 steht auf 2 Das geht dann immer so weiter bis unendlich. Wie kann ich meine aktuelle Label1 als Ini datei speichern und dann beim starten wieder in die Label1 +1 drauf machen? |
AW: Startzähler für Programm erstellen (Wichtig)
Zitat:
Aber sag doch was genau du dabei nicht verstehst. Sonst kann dir dabei auch niemand helfen... |
AW: Startzähler für Programm erstellen (Wichtig)
Du brauchst Dich nur an meinem Beispiel orientieren und einmal etwas damit probieren...
(Schritt für Schritt - bis Du die Lösung gefunden hast) |
AW: Startzähler für Programm erstellen (Wichtig)
Ich find das echt kompliziert und will jetzt auch nicht soviel Zeit damit verbringen um eine Ini zu erstellen.
Danke das ihr mir helfen wollt,aber würde toll sein,wenn ihr mir den exakten Code für das mit Datum gebt oder das ohne Zeit,sondern mit jedem Start. |
AW: Startzähler für Programm erstellen (Wichtig)
Zitat:
Zitat:
|
AW: Startzähler für Programm erstellen (Wichtig)
Hab es jetzt gerade ganze Zeit ausprobiert.Habe es zwar nicht mit einer Ini geschafft aber mit einer txt und ich glaub es ist ja das gleiche.
Also bis jetzt geht es,jetzt weiss ich nicht wie ich Edit1 bei jedem Start +1 addiere.
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin List := TStringList.Create; try List.LoadFromFile('C:\Daten.txt'); if List.Count>0 then Edit1.Text:=List[0]; finally List.Free; end; begin ///Edit1 soll hier jetzt +1 addiert werden. Wie? end; |
AW: Startzähler für Programm erstellen (Wichtig)
Mit schnell geht beim Programmieren so gut wie gar nichts, schon gar nicht als Anfänger.
Gut Ding will hier - wie überall - Weile haben. Mit dem Fertigstellen des Programmes über das Wochenende wird es demnach nichts. Unrealistische Ziele frustrieren und demotivieren eher, weil man sie nicht erreicht. |
AW: Startzähler für Programm erstellen (Wichtig)
Aber wenn ich das fertig habe,dann bin ich (fast) fertig,also der rest ist denk ich mal ne Sache von 10 Minuten.
|
AW: Startzähler für Programm erstellen (Wichtig)
Delphi-Quellcode:
Delphi weiß da nicht, was es machen soll.
StringVariable := StringVariable + 1 funktioniert nicht.
Delphi-Quellcode:
wäre eine Lösung.
StringVariable := IntToStr(StrToIntDef(StringVariable, 0) + 1);
Aber versuche das auch zu verstehen... Zum Programmieren lernen brauch man vieeeel Zeit ;-) |
AW: Startzähler für Programm erstellen (Wichtig)
Geht der 2. Code? Weil bei mir geht der irgendwie nicht?
Soll ich exakt den Code : StringVariable := IntToStr(StrToIntDef(StringVariable, 0) + 1); Bei Form.Create oder muss ich an dem Code noch was ändern? |
AW: Startzähler für Programm erstellen (Wichtig)
Lass mich Raten, der Compiler kennt StringVariable nicht. Und für die Zukunft, wir sitzen nicht vor deinem Computer, wir können also die Fehlermeldungen nicht sehen.
|
AW: Startzähler für Programm erstellen (Wichtig)
Zitat:
Nur noch eine Sache von 10 Minuten? Eine sehr interessante Selbsteinschätzung :thumb: GG |
AW: Startzähler für Programm erstellen (Wichtig)
Okay sorry Luckie :D
Also das wird mir geschrieben dann: [Error]Unit1.pas[52];Undeclared identifier: 'StringVariable' [Fatal Error]Project2.dpr(5):Could no compile used unit 'Unit1.pas' Das ist der ganze Code:
Code:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; List: TStrings; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin List := TStringList.Create; try List.LoadFromFile('C:\Daten.txt'); if List.Count>0 then Edit1.Text:=List[0]; finally List.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin List := TStringList.Create; try List.Add(Edit1.Text); List.SaveToFile('C:\Daten.txt'); finally List.Free; end; begin StringVariable := IntToStr(StrToIntDef(StringVariable, 0) + 1); end; end; end. |
AW: Startzähler für Programm erstellen (Wichtig)
Und was bedeutet
Zitat:
|
AW: Startzähler für Programm erstellen (Wichtig)
Öhm, ich will mich ja nicht grossartig einmischen. Aber als das hier grade gelesen habe, kam mir als erstes in den sinn, das sich hier jemand einen spass erlaubt.
|
AW: Startzähler für Programm erstellen (Wichtig)
Ehrlich gesagt weiss ich das net :s
|
AW: Startzähler für Programm erstellen (Wichtig)
Zitat:
Dann versuch mal herauszufinden, was "undeclared" auf deutsch heißt und wie man Variablen deklariert und nutzt. Und ich empfehle dir, dir die Grundlagen anzueignen. Wir sind hier um zu helfen, wenn man nicht mehr weiter kommt bei konkreten Probleme. Wir sind aber keine Privatlehrer, die dir alles vorkauen. Und solltest du keine Eigeninitiative zeigen, wird das nichts, weder mit dem Programmieren, noch mit Hilfe hier im Forum. |
AW: Startzähler für Programm erstellen (Wichtig)
Ich muss was bei der var schreiben oder?
|
AW: Startzähler für Programm erstellen (Wichtig)
JAAAAA GESCHAFFT
Delphi-Quellcode:
Oh man bin ich dumm :(
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; List: TStrings; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin List := TStringList.Create; try List.LoadFromFile('C:\Daten.txt'); if List.Count>0 then Edit1.Text:=List[0]; finally List.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin List := TStringList.Create; try List.Add(Edit1.Text); List.SaveToFile('C:\Daten.txt'); finally List.Free; end; edit1.text := IntToStr(StrToIntDef(edit1.text, 0) + 1); end; end. |
AW: Startzähler für Programm erstellen (Wichtig)
Was geht schneller? Ausprobieren und sich freuen, wenn es funktioniert oder hier eine halbe Stunde und länger auf eine Antwort warten?
|
AW: Startzähler für Programm erstellen (Wichtig)
Dumm vielleicht nicht unbedingt ;-)
Aber man muss sich Zeit nehmen und konzentrieren. Sonst wird das nix mit dem Programmieren. Lernen und Fehler suchen muss aber jeder... Jedenfalls erst mal Gratulation zum Erfolg. :-) PS: Für Quelltextzitate hier im Forum solltest Du das Delphi-Quote verwenden (der Helm in der Palette). |
AW: Startzähler für Programm erstellen (Wichtig)
Kommt halt drauf an wie man gerade drauf ist.
Wenn man Lust auf ausprobieren hat,ist man schneller wenn nicht dann wartet man auf Antworten :D Danke an alle die geholfen haben. :) |
AW: Startzähler für Programm erstellen (Wichtig)
Programmieren ist die Lust auf selber lösen. Gerade beim Lernen, im Produktiveinsatz, wenn man Geld damit verdienen muss, sind Fertiglösungen natürlich immer wilkommen, und kosten natürlich in der Regel auch. Berechtigterweise. Bloßes Programmieren ist im wesentlichen: Grob die Syntax der verwendeten Sprache kennen, abstraktes Denken, und die Bereitschaft sich tagelang durch Dokus und Google zu wühlen um 0,5% der Gesamtlösung zu erarbeiten. Ist man dazu nicht bereit, wird's ein steiniger Weg. Und sicherlich keiner, der zu Verdienst oder wertvollem Beitrag zur "community" führt. Deal with it. Hast du hier ja schon ganz gut geschafft ;)
|
AW: Startzähler für Programm erstellen (Wichtig)
Du nutzt hier zweimal eine lokale TStringList,
aber warum hast du deren Variable global deklariert? Globale sind "böse" und wenn man etwas nur lokal (innerhalb einer Prozedur) nutzt, dann gehört die Variable auch lokal (innerhalb der Prozedur) deklariert. Und "(wichtig)" sind hier irgendwie alle Probleme ... das muß man nicht unbedingt immer mit hinschreiben.. Wobei das hier IMHO nicht wirklich wichtig war. |
AW: Startzähler für Programm erstellen (Wichtig)
Ich weiß ja nicht genau, was deine Intention darstellt, aber da ich aufgrund deiner dargelegten Kentnisse nicht vermute, dass du im kommerziellen Sektor tätig bist, lege ich einfach mal zu grunde, dass du dein Programm rein hobbymäßig schreibst.
Hier muss ich Medium voll und ganz recht geben. Wenn du wirklich die Freude am Entdecken einer eigenen Lösung erfahren willst, dann darfst du nicht (nur) auf fertige Lösungen setzen. Ich behaupte einfach mal ganz Dreist, dass mindestens 50% beim Programmieren das Ausprobieren von Lösungsansätzen ausmacht. Man denkt sich "aha, so könnte das eventuell gehen", probiert das ganze dann aus, stößt auf neue Probleme, entwickelt Lösungen auch dafür und irgendwann hat man es so, wie man es haben will. Grade am Anfang und da spreche ich aus Erfahrung, ist Ausprobieren enorm wichtig, wenn man was lernen will. Man muss es natürlich auch wirklich wollen und ein gewisses Grundinteresse am finden von Lösungsansätzen mitbringen. Auch sollte man sich nicht von Fehlschlägen aus dem Konzept bringen lassen. Dafür sind dann ja Foren wie dieses da, wo vielleicht der ein oder andere User einen Ansatz präsentiert, an den man selbst noch nicht gedacht hat. |
AW: Startzähler für Programm erstellen (Wichtig)
Hier mal der Code wenn man eine Ini-Datei verwenden möchte
Delphi-Quellcode:
In der Ini-Datei steht mit diesem Code dann z.B.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; // List: TStrings; // implementation {$R *.dfm} uses IniFiles; procedure TForm1.FormCreate(Sender: TObject); var Ini : TIniFile; begin Ini := TIniFile.Create( 'C:\Daten.ini' ); try Edit1.Text := Ini.ReadString( 'Merken', 'Edit1', Edit1.Text ); finally Ini.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); var Ini : TIniFile; begin Ini := TIniFile.Create( 'C:\Daten.ini' ); try Ini.WriteString( 'Merken', 'Edit1', Edit1.Text ); finally Ini.Free; end; Edit1.Text := IntToStr( StrToIntDef( Edit1.Text, 0 ) + 1 ); end; end.
Code:
EDIT: Jo, da fehlte das Ini vor Read- und WriteString :stupid:
[Merken]
Edit1=3 |
AW: Startzähler für Programm erstellen (Wichtig)
Bei seinem Problem würde ich auch noch Ini.ReadInteger und Ini.ReadDate so nebenbei erwähnen. :angle2:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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