Delphi-PRAXiS
Seite 5 von 18   « Erste     345 6715     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Manifest-Creator (https://www.delphipraxis.net/139658-manifest-creator.html)

WebUpdate System 5. Sep 2009 10:31

Re: Manifest-Creator
 
Hallo Himitsu,

wenn man eine .Ini erneut läd, kommt es zu einer Exception, "List index out of bounds (xxx)"

Delphi-Quellcode:
Procedure TForm1.Button2Click(Sender: TObject);
    Var F:  TIniFile;
      i, i2: Integer;
      C:    TWinControl;

    Begin
      OpenDialog1.DefaultExt := 'ini';
      OpenDialog1.FileName   := Edit3.Text;
      OpenDialog1.Filter     := SIniFile;
      OpenDialog1.FilterIndex := 1;
      If not Assigned(Sender) or OpenDialog1.Execute Then Begin
        F := TIniFile.Create(OpenDialog1.FileName);
        Try
          For i := 0 to ComponentCount - 1 do Begin
            C := TwinControl(Components[i]);
            If (GetShortHint(C.Hint) <> '') and (Copy(GetShortHint(C.Hint), 1, 1) <> '*') Then
              If C is TCustomComboBox Then Begin
                If TComboBox(C).Style = csDropDownList Then
                  TComboBox(C).ItemIndex := F.ReadInteger('ManifestCreator', GetShortHint(C.Hint), 0)
                Else TComboBox(C).Text := F.ReadString('ManifestCreator', GetShortHint(C.Hint), '');
              End Else If C is TCheckListBox Then Begin
                For i2 := 0 to TCheckListBox(C).Items.Count - 1 do
                  TCheckListBox(C).Checked[i2] := F.ReadBool('ManifestCreator', //<<< HIER kommt der ERROR
                    GetShortHint(C.Hint) + '_' + TCheckListBox(C).Items[i], False);
              End Else If C is TCustomCheckBox Then
                TCheckBox(C).Checked := F.ReadBool('ManifestCreator', GetShortHint(C.Hint), False)
              Else If C is TCustomEdit Then
                TEdit(C).Text := F.ReadString('ManifestCreator', GetShortHint(C.Hint), '');
          End;
        Finally
          F.Free;
        End;
      End;
    End;
Kannst Du dir das mal ansehen?

Hawkeye219 5. Sep 2009 10:48

Re: Manifest-Creator
 
Hallo,

es ist nur eine Vermutung:

Delphi-Quellcode:
[...]
End Else If C is TCheckListBox Then Begin
  For i2 := 0 to TCheckListBox(C).Items.Count - 1 do
    TCheckListBox(C).Checked[i2] := F.ReadBool('ManifestCreator',
      GetShortHint(C.Hint) + '_' + TCheckListBox(C).Items[i], False); // <- sollte hier nicht "i2" stehen?
End Else If C is TCustomCheckBox Then
[...]
Gruß Hawkeye

himitsu 5. Sep 2009 11:28

Re: Manifest-Creator
 
Zitat:

Zitat von Hawkeye219
// <- sollte hier nicht "i2" stehen?

sollte es :freak:
(das Gleiche beim Speichern)

sowas passiert, wenn man was umbaut und dann nicht komplett testet ._.

[Update im Post #1]

himitsu 27. Okt 2009 18:09

Re: Manifest-Creator
 
Es gab jetzt eigenentlich nur zwei winzigkleine Änderungen.

Man kann sich nun auch ein Resource-Compile-Script mit erstellen/speichern lassen,
welches dann aus der .RC eine .RES macht.
(siehe Edit und Memo unten rechts im Bild)

Und nach dem Speichern von Dateien wird der neue Name/Pfad auch in die zugehörigen Edits eingetragen.
(hatte ich irgendwie vergessen)

[Update im Post #1]

taveuni 20. Mai 2010 12:18

Re: Manifest-Creator
 
Hallo,

Dieser Thread liegt zwar schon eine Weile brach - aber trotzdem:

Bevor ich dupliziere: Hat schon jemand (himitsu?) die Dateiversion
in den Manifest-Creator integriert? Falls nein - darf ich überhaupt die Sourcen
verwenden?
Oder gibt es mittlerweile andere Möglichkeiten einfach ein Win7 Manifest
inkl. Dateiversion und Anwendungsicon zu erzeugen (Auch kommerziell)?

Wenn man viele kleine Applikationen erstellt ist das schon sehr mühsam.

Danke

turboPASCAL 20. Mai 2010 16:46

Re: Manifest-Creator
 
Zitat:

Dateiversion und Anwendungsicon zu erzeugen (Auch kommerziell)?
Die Dateiversion und das App.-Icon machst du über die IDE (im Falle der Verwendung der VCL).
Man könne diese auch über eine RC-Datei machen, aber die IDE wird dann ggf. rumzicken...

himitsu 20. Mai 2010 17:25

Re: Manifest-Creator
 
Zitat:

Zitat von turboPASCAL
Man könne diese auch über eine RC-Datei machen, aber die IDE wird dann ggf. rumzicken...

Also möglich wäre dieses ... das Icon würde sogar direkt in die RC reinpassen (nicht nur als includete Icon-Datei),

aber wie schon erwähnt dürfen diese Informationen dann nicht über Delphi in der Projekt-Resource-Datei (*.res) enthalten sein, da sich dann der Linker über doppelte Resourcen beschwert.

(PS: Die Dateiversion ist, als Beispielcode schon enthalten ... Dateiversion > Einschalten > und dann rechts die .RC manuell rauskopieren und bearbeiten)

Aber klar ... gib mir ein bissl Zeit ... möglich ist Vieles :angel:

himitsu 23. Mai 2010 18:11

Re: Manifest-Creator
 
Zitat:

Zitat von turboPASCAL
Die Dateiversion und das App.-Icon machst du über die IDE (im Falle der Verwendung der VCL).
Man könne diese auch über eine RC-Datei machen, aber die IDE wird dann ggf. rumzicken...

Nunja, ein Manifest kann man ja auch über die IDE einstellen
und seit ein paar Delphiversionen wird dieses ebenso in der Projekt-Resource {$R *.res} abgelegt, so wie die delphiinternen Versionsinfos.

Wenn schon das Manifest von extern kommt, dann ist es auch gut möglich (vielleicht schön für NonVCL), Alles über die hier generierte RC/RES einzubinden? :gruebel:


So, hier dann schonmal eine Vorschau:
- die Versionsinfos können eingestellt werden (allerdings sind diese natürlich nur in der RC enthalten)
- man kann diese sogar mehrsprachig auslegen (Windows bietet dafür theoretisch zwar eine fast unbegrenzte Anzahl, aber ich hab mich mal mit 2 wählbare Sprachen zufriedengegeben ... das sollte wohl erstmal ausreichen)
- das Icon kommt auch bald

und nun noch was zum Rest
- die Sprachverwaltung wurde geändert
- es sind aktuell Englisch und Deutsch direkt integriert und können zur Laufzeit umgestellt werden
- die Optionsdatei liegt aktuell noch im Programmverzeichnis, falls man diese speichert
- diese beiden Sprachen sind direkt integriert, aber wenn man die zusätzliche Sprach-XML ebenfalls in das Programmverzeichnis legt, dann wird stattdessen diese geladen
(ein Neukompilieren für eine Spracherweiterung oder andere Änderungen ist also nicht mehr nötig)

- die Parameter-Verwaltung wurde ebenfalls verändert und erweitert, so ist jetzt keine feste Reihenfolge mehr nötig
- dadurch bekommt man mehr Möglichkeiten, für eine weniger strikte Fernsteuerung
  • LoadActiveX=yes läd sofort beim Start die ActiveX-Liste
  • IniFile=xyz.ini läd eine bestimmte Einstellung
  • Manifest=xyz.manifest stellt eine bestimmte Ausgabedatei ein (oder den Editinhalt)
  • Resource=xyz.rc das Gleiche für das Resource-Script
  • Recreate=yes speichert/erstellt die eingestellten Manifest- und/oder RC-Datei
    und beendet das Programm gleich wieder, wenn der Speicherforgang erfolgreich war

  • längere Parameter (z.B. mit Leerzeichen) sind natürlich auch möglich
    z.B.: IniFile=xyz.ini IniFile="xyz.ini" oder "IniFile=xyz.ini"



Es fehlt also jetzt noch das Icon
und dann wollte ich mich nochmal umsehn, ob es bezüglich des Manifests neu Dinge gibt, welche mit reinkommen sollten.

[edit]
Anhänge/Testversionen gelöscht ... neue Version in Post #1

himitsu 24. Mai 2010 19:12

Re: Manifest-Creator
 
Die beiden Dateien im vorherigen Post #48 wurden nochmals geupdatet.

Falls dort keine Fehler/Probleme entdeckt werden, dann würde ich diese in den nächsten Tagen im Post #1 als aktuelle Version einführen.

  • Icon ist nun enthalten
  • In den ganzen Output-Dateiteien werden jetzt die Kodierungen richtig angewendet
    (vorallem das UTF-8 wurde glatte vergessen :oops: )
    * UTF-8 für's .manifest
    * Ansi für die .rc
    * entpsrechend den jeweiligen Codepages für die Versionsinfos innerhalb der .rc
    * und OEM für die .cmd
  • die gepsicherten Einstellungen (.ini) wurden auch nochmals überarbeitet, denn da gab es Probleme mit mehrzeiligen Memos
  • Ein Problem in der Manifest-Erstellung, welcher fehlerhaftes XML erzeugt, wurde ebenfalls behoben.
    (aber zum Glück hat wohl keiner die Sprache oder den Public Key Token im AssemblyIdentity verwendet, so daß es anscheinend niemandem auffiehl)
  • ansonsten wurde vorwiegend noch an den Innereien gearbeitet
    ( ein bissl hier und da optimiert, da was anders gemacht, dort auch noch Irgendwas usw. )

Weitere Features der Manifeste sind noch nicht integriert wurden.
Hatte anscheinend nur noch so spezielle Dinge gefunden und davon nicht zu Wenige.
Alles zu integrieren wäre zu viel Aufwand, also wenn jemand etwas Bestimmtes benötigt (nachzusehn z.B. ab hier http://msdn.microsoft.com/en-us/library/aa375632.aspx ), dann kann er/sie sich ja gerne melden und ich versuche es dann einzubauen.

taveuni 25. Mai 2010 08:23

Re: Manifest-Creator
 
Hallo himitsu,

Vielen Dank,
Das nähert sich der optimalen Lösung!
So müssen nämlich nicht Informationen an 2 verschiedenen Orten gepflegt werden.
(win7 manifest, Anwendungsicon und Dateiinformationen).

2 Kleinigkeiten sind mir aufgefallen.
Ab dem Zeitpunkt wenn ein Icon geladen wird reagiert dein Programm sehr träge.
(Keine Rückmeldung für ca. 10-15 Sekunden).
Insbesondere das laden selbst, danach ein Klick auf einen anderen Node im Treeview.
Ebenfalls das speichern und laden der Ini (wobei dies verschmerzbar ist).
Ist das nur bei mir so?

Dann das speichern der *.rc Datei: Es wird ein Name verlangt beim Speichern.
In der *.cmd Datei wird dann aber immer Manifest.rc gesucht. Das war früher anders?

Ansonsten: Tolle Arbeit

Danke

Gruss Werner


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:05 Uhr.
Seite 5 von 18   « Erste     345 6715     Letzte »    

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