Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#12

AW: F2046 Zu wenig Arbeitsspeicher (Delphi)

  Alt 8. Nov 2015, 09:53

Müssen es den JPEGs sein? Reichen nicht PNGs (in einer ImageListe) auch?
Erstellst du alle Formulare beim Programmstart? Wieso?
Hallo Bernhard,

ohne die Bilder werden 2000 Zeilen aus Memos einzeln nacheinander gelesen und jeder Zeile wird eine kurze mp3-Datei zugeodnet. Nebenbei wird jede Textzeile noch analysiert und farblich bearbeitet - das war's schon. Ich kenne keine Methode, die mp3s zu verkleinern. Das scheint sich aufzusummieren.
Die Bildquellen werden über MultiResBitmaps direkt ins Programm übernommen und nicht separat (zusätzlich) gelagert. Auch dafür kenne ich keine Alternative.
Wie kommst du auf 1500 MB? Die .apk ist auch "nur" 49 MB groß. Keine Ahnung, wie man das schrumpfen kann. Also im Grunde liefern
Memos resourceschonend Text in ein relativ kleines Programm und mp3 wird "beigestellt".
Prinzipiell meine ich, dass XE5 und MSBuild mit 200 MB nicht überfordert sein dürfte, da das Programm nicht komplex verschachtelt ist, sondern fast linear arbeitet.
Aber natürlich greife ich gern Alternativen auf.

Vielen Dank erst einmal
Udo
Puh...
1.) Memos sind Komponenten für die Anzeige von Text 'zur Laufzeit', gerade bei größeren Texten und nicht dafür vorgesehen große Mengen von Text bei Compilierung zu halten!
Und anstelle dann mehrere Memos zu platzieren, solltes Du den ganzen Text in eine separate Textdatei packen und diese einfach mit LoadFromFile laden. Dadurch kannst Du dann diesen Text auch leichter korrigieren oder gar Multilingual machen.
2.) Auch deine Bilder kannst Du in ein separates File nacheinander gereiht packen und dann (ebenfalls zur Laufzeit) öffnen.
Hier würde ein FileStream genügen, bei dem Du die Bilder nacheinander einließt und z.B. in eine ImageList lädst. Auch dadurch hast Du die Möglichkeit, ohne Neukompilierung Bilder zu ersetzen.
3.) Das gleiche wie bei den Bildern kannst Du auch mit deinen MP3s machen.

Somit besteht dein Projekt dann aus einer (kleinen) Exe und 3 weiteren Dateien.

Um noch mehr Platz zu sparen, kannst Du Dir eine Routine als Ersatz für z.B. SaveToFile/LoadFromFile erstellen, welche vorher beim speichern deiner Daten diese zunächst mit zLib komprimiert und beim Laden entpackt.
Die Zip Funktionen, welche bei Delphi mitgeliefert wird, sollte dafür problemlos ausreichen.

Zusätzlich kann dann niemand (Kunde) an den Daten leicht was Ändern, da er beim öffnen der z.B. Texte-Datei nur Zeichensalat (gezippte Texte) vor sich hat.
  Mit Zitat antworten Zitat