Entwickler-Ecke

Sonstiges (Delphi) - Systemvoraussetzung ermitteln


gerd8888 - So 06.04.14 20:33
Titel: Systemvoraussetzung ermitteln
Hallo,

ich habe in Delphi 2009 ein Programm geschrieben und es unter Win 7 compiliert.
Es läuft unter allen Win-Versionen.
Das einzige besondere an dem Programm, dass es mit einer stringliste eine 32M Datei oeffnet.
Ferner wird benutzt: der Tmediaplayer und wav Dateien.

Wie ermitteln man jetzt eine angemessene Systemvoraussetzung, die auch wirklich stimmt.


alle Win-Versionen werden unterstützt, kann man doch nach wie vor angeben?


Gerd


jaenicke - So 06.04.14 21:24

Dass Windows 2000 mindestens erforderlich ist, kann man durchaus hinschreiben, auch wenn das nicht viele betreffen dürfte.
Aber wenn du einmal auf neuere Delphiversionen umsteigst, musst du dann ohnehin z.B. mindestens XP mit SP3 angeben, insofern ist so eine Minimalangabe nicht schlecht.

Zudem würde ich stets die höchste getestete Version mit angeben.


Delete - So 06.04.14 21:27

@gerd8888:

Wenn du mit 32M Datei eine Datei mit der Größe von 32 Megabyte meinst, dürfte das heutzutage kaum noch an irgendwelche Grenzen stoßen.


gerd8888 - Mo 07.04.14 16:51

Wenn ich folgendes schreibe:

Systemvoraussetzung:

ab Win 2000
1-GHz-Prozessor oder höher mit 32 Bit (x86) [aber nich 64 Bit (x64)]
1 GB RAM (32-Bit) oder mehr
1-2 GB verfügbarer Festplattenspeicher (32-Bit) für das Programm

ist das dann so korrekt?

Gerd


Delete - Mo 07.04.14 17:38

Kann ich nicht beurteilen, ich kenne deine Anwendung ja nicht. Seltsam ist aber doch, daß dein Programm nicht auch auf einem 64-Bit-Windows laufen kann ...


gerd8888 - Mo 07.04.14 21:17

Dass das Programm nicht unter Win 64-Bit läuft habe ich jetzt nur vermutet, da ich es doch auf einem 32 Bit Computer compiliert habe.
Läuft das also auch unter 64 Bit ?


jaenicke - Mo 07.04.14 21:22

Solange du nicht Assembler nutzt oder irgendetwas Exotisches ja.

1 GHz kann übrigens alles sein, schnarchlangsam oder schön schnell. Das ist schon lange kein echtes Maß mehr... das war bis vor etwa 10 Jahren mal so...


Mathematiker - Mo 07.04.14 21:23

Hallo,
user profile icongerd8888 hat folgendes geschrieben Zum zitierten Posting springen:
Läuft das also auch unter 64 Bit ?

Ich weiß ja nicht, was für spezielle Programmiertricks Du nutzt, aber meine Delphi 5(!)-Programme laufen alle absolut problemlos unter Win64.
Dann wird Dein Delphi 2009 das wohl auch "hinbekommen". Testen würde ich es aber schon. Du wirst doch jemanden kennen, der ein 64bit-Windows hat.

Beste Grüße
Mathematiker


Lemmy - Mo 07.04.14 21:23

user profile icongerd8888 hat folgendes geschrieben Zum zitierten Posting springen:


Wie ermitteln man jetzt eine angemessene Systemvoraussetzung, die auch wirklich stimmt.


VMWare oder VirtualBox installieren, WIndows drauf und dann kannst Du mit dem zugewiesenen Speicher herumspielen und kannst dann selbst entscheiden, wie viel Speicher mind. vorhanden sein muss um die Software noch bedienen zu können.

Grüße


gerd8888 - Mo 07.04.14 22:34

Assembler nutze ich nicht. Wenn das delphi 5 unter win-64 läuft, wird es meins auch können. Ausprobieren kann ich es auf einem win-64 allerdings nicht.
Kenne niemanden. (Ich habe auch keinen Freund, der mit Delphi programmiert) Bin immer auf die Hilfe von Internet und Foren angewiesen.
Ich frage mich ob das überhaupt noch zeitgemäß ist eine mind. Systemvoraussetzungsangabe ? Wer arbeitet heute noch mit einem Betriebssymstem, dass älter ist als Win XP.
Ich füge dann zu meinen obigen Angaben (auch win64) hinzu.

Habe das Programm unter freeware hier schon mal vorgestellt:
https://mega.co.nz/#!KIMkUSyb!QutteFlGvv8Bd1Jk1gv2kk81w9MXC9ilBHDmzvI4oN0

Gerd


Mathematiker - Mo 07.04.14 22:59

Hallo,
user profile icongerd8888 hat folgendes geschrieben Zum zitierten Posting springen:
Habe das Programm unter freeware hier schon mal vorgestellt:
...

Ich grüble seit ein paar Minuten schon und komme nicht dahinter: Was soll denn das Programm können? Wozu braucht man es?
Und es braucht eine 32MB-Stringliste? Und es ist fast 100 MB groß?
Ich verstehe es nicht. :nixweiss:

Wenn ich es (vor einem Download!) wüsste und vor allem, wenn es mir das System nicht verändert, könnte ich es ja unter Win7-64 bit und Win8.1-64 bit testen.
Hat es etwas mit dem Schachprogramm http://www.entwickler-ecke.de/viewtopic.php?t=110200&highlight=gerd8888 zu tun?

Beste Grüße
Mathematiker


jaenicke - Mo 07.04.14 23:22

Da ist nichts Besonderes dran, außer dem stark gewöhnungsbedürftigen Design. Deshalb startet das Programm problemlos unter Win 8.1 64-Bit und lässt sich auch problemlos mit XE5 kompilieren.

Falls du Tipps möchtest:

Wie man es bedient, habe ich leider nicht auf die Schnelle herausgefunden, konnte es also nicht direkt testen. Toolbuttons ohne Hint sind übrigens eine gute Idee, zumindest, wenn man gerne raten möchte... :?!?:
Die Hilfe habe ich gefunden, aber gerade keine Zeit mir das groß durchzulesen. Intuitiv wäre besser. ;-) Aber je nachdem was alles möglich ist, ist das natürlich nicht immer ganz einfach, das ist klar.

Was den Quelltext angeht, so ist der nach der automatischen Formatierung ja gut lesbar. Nicht so gut ist, dass du überall innerhalb des eigenen Formulars die globale Variable für das Formular nutzt. Sobald du das Formular zweimal erzeugst, steht da logischerweise nur eine der beiden Instanzen drin. Das heißt du greifst von beiden Formularen aus auf das zu, das in der Variablen steht. Nicht so sinnvoll, oder?
Lösung: Self statt Form1 nutzen, das ist die eigene Klasse, in der du gerade bist, also in dem Fall die aktuelle Formularinstanz, in der du dich befindest.


gerd8888 - Di 08.04.14 12:24

Mathematiker, der Link stimmt. Nur diesmal kann man es sauber downloaden. Ein zip-file.
Was die grosse Datei angeht: In der datei.txt stehen alle meine Daten drin. Und die ist eben so gross.
Das sind die gesammelten Problemschach-Dateien.
Warum die exe Datei 1,5 MB benoetigt, weiss ich auch nicht.

Jaenicke, das Design habe ich mir ausgedacht. Man kann den Hintergrund und die Bretter sowie Figuren auswählen.
Sollte also so schlecht nicht sein. Die Umsetzung geht vielleicht immer besser.
Das hört sich doch gut an, wenn es sich problemlos unter XE5 compilieren laesst.
Das mit den Buttons, da kann ich ja noch einen Hint einfügen.
Ich habe die globale Variablen machen müssen, weil ich es in einer anderen unit benoetige. Z.B. das Spielfeld muss global sein.
Was Du mit self form1 meintest, weiss ich nicht.

Gerd


WasWeißDennIch - Di 08.04.14 15:16

user profile icongerd8888 hat folgendes geschrieben Zum zitierten Posting springen:
Was Du mit self form1 meintest, weiss ich nicht.

Self bezieht sich immer auf die eigene Instanz, in der die Methode ausgeführt wird. Form1 hingegen bezieht sich immer auf die Instanz, die in der globalen Form1-Variablen hinterlegt ist. Wenn Du also mehrere TForm1-Instanzen erzeugt hast, greifst Du ggf. auf die falsche zu.


gerd8888 - Fr 11.04.14 20:41

heisst das mit anderen Worten: Wenn ich nur die globalen Variablen benoetige rufe ich die form1 besser nur mit self auf ?
Wenn dem so ist, werde ich das umschreiben. Bisher rufe ich es mit aufgerfuen:

Delphi-Quelltext
1:
form1.showmodal                    


muss ich die ganze form1 unit

Delphi-Quelltext
1:
form1 := Tform1.create(self)                    

umgestalten?

Habe mit self noch nicht gearbeitet.


WasWeißDennIch - Sa 12.04.14 15:48

Mal ein Beispiel, kleine Klasse:

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:
type
  TDummy = class
  private
    FDingens: string;
  public
    constructor Create(ADingens: string);
    procedure ShowDingens;
  end;

var
  (* globale TDummy-Variable, so wie es Delphi mit den Formular-Variablen macht *)
  Dummy1: TDummy;

...

constructor TDummy.Create(ADingens: string);
begin
  inherited Create;
  FDingens := ADingens;
end;

procedure TDummy.ShowDingens;
begin
  (* Wir geben hier das FDingens-Feld der aktuellen Instanz aus *)
  ShowMessage(Self.FDingens);
  (* Zum Vergleich: FDingens-Feld der Instanz aus der globalen Variablen oben *)
  ShowMessage('Dummy1: ' + Dummy1.FDingens);
end;


Nun erstellen wir 2 Instanzen davon:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TSabbelSuelz.MachDingens;
var
  Dummy2: TDummy;
begin
  Dummy2 := nil;
  Dummy1 := TDummy.Create('Dummy1');
  try
    Dummy2 := TDummy.Create('Hallo Welt');
    Dummy1.ShowDingens;
    Dummy2.ShowDingens;
  finally
    Dummy1.Free;
    Dummy2.Free;
  end;
end;

Die Show-Dingens-Methode funktioniert auf diese Weise nur solange, wie in Dummy1 (also der globalen Variablen) auch eine gültige Instanz hinterlegt ist, ansonsten knallt es mit einer AV raus. Darüberhinaus würde man ja in den seltensten Fällen innerhalb einer Methode die Daten einer ganz bestimmten benannten Instanz der entsprechenden Klasse bearbeiten wollen, sondern doch meist die der derjenigen, innerhalb deren Methode man sich gerade befindet.

Die globalen Formular-Variablen erstellt Delphi nur deshalb, weil sie zur automatischen Formularerzeugung gebraucht werden. Soll das entsprechende Formular erst dynamisch zur Laufzeit erstellt werden, kann man diese Variable auch löschen.


gerd8888 - Sa 12.04.14 16:26

Danke für das Beispiel.
Ich werde es mir einmal in Ruhe ansehen.
Z.Z. brummt mein Kopf, aber nächste Woche sehe ich mir das an.