Memo Lade Anzeige

Für Fragen von Einsteigern und Programmieranfängern...
hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Memo Lade Anzeige

Beitrag von hbr »

Hallo,
ich lade sehr große Texst-Zeichen von einem String in ein Memo.txt
(und das dauert).
Nun kann das je nach Datenmenge bis zu 30 Sekunden oder länger dauern.
Wie kann man das (eventuell mit einer ProgressBar oder anders?) anzeigen lassen, dass der Rechner während er das Memo füllt beschäftigt ist?
Freue mich auf Antworten.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Memo Lade Anzeige

Beitrag von af0815 »

Wie füllst du die Daten ein ? Zeile für Zeile ? Etwas Code von deiner Seite, entlastet die Kristallkugel. Weil ein Memo kann vernünftige Datenmengen sehr schnell aufnehmen, wenn es richtig gefüttert wird.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Memo Lade Anzeige

Beitrag von hbr »

OK,
eine Zeile Code base64 sehr lang je nach Bildgrösse.
Memo.text := String.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Memo Lade Anzeige

Beitrag von af0815 »

hbr hat geschrieben: Mo 22. Jul 2024, 08:05 eine Zeile Code base64 sehr lang je nach Bildgrösse.
Memo.text := String.
Im Prinzip gar nicht weil die Operation nicht in Teiloprationen vorliegt, daher arbeitet die einmal blocking.
Ev.

Code: Alles auswählen

Cursor := crHourGlass;
try
  Memo.Lines.BeginUpdate;
  Memo.Lines.Text:= string;
  Memo.Lines.EndUpdate;
finally
 Cursor := crDefault;
end;
Damit wird zumindest dem Control gesagt, das es während des Ladens kein Refresh machen muss und der Cursor geändert. Nachdem das ganze blocking ist, geht da IMHO keine Anzeige.

Über den Sinn diskutiere ich mal sicherlich nicht, weil du wirst deine Gründe dafür haben, die Daten in ein Memo zu quetschen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Memo Lade Anzeige

Beitrag von hbr »

Super, vielen Dank.
Im Zusammenhang mit dem Memo habe ich ein weiteres Problem wenn das Memo gefüllt wird.
Es werden über eine Procedure mehrere Buttons (5 Stück) vor und nach dem Füllen diese auf disabled oder enabled geschaltet.
Mindestens zwei der Button werden nicht geschaltet.
Wahrscheinlich weil das Füllen viel Rechenleistung benötigt.
Gibt es dafür eine Lösung?
Zuletzt geändert von hbr am Mo 22. Jul 2024, 09:44, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10921
Registriert: Mo 11. Sep 2006, 19:01

Re: Memo Lade Anzeige

Beitrag von theo »

af0815 hat geschrieben: Mo 22. Jul 2024, 09:24 Über den Sinn diskutiere ich mal sicherlich nicht, weil du wirst deine Gründe dafür haben, die Daten in ein Memo zu quetschen.
Mich interessiert der Hintergrund eigentlich fast immer.
Ein TMemo ist ein Texteditor. Was man an Base64 codierten Daten händisch editieren will, kann ich nicht nachvollziehen.
Ich verstehe nicht einmal, warum man sich diese Codemengen anschauen möchte.
Was "sieht" man denn da?

Vllt. kann hbr das mal erklären.

EDIT: Wenn es um HTML geht, würde ich sowieso ein Synedit (Codeeditor) nehmen.

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Memo Lade Anzeige

Beitrag von hbr »

Mich interessiert der Hintergrund eigentlich fast immer.......
Ja jetzt wo Du fragst,
ich mache mir meinen Bildwandler für bas64 Code.

Die Idee war am Anfang und am Ende den Type des Bildes nicht nur Automatisch der Typen z.B. „data:image/jpeg;base64, oder url('data:image/jpeg;base64,..... ') „ einzutragen, sondern auch Händisch.

Du hast recht, hierfür reicht ein TEdit für die Eingabe des jeweiligen Typs.
Der gesamte Inhalt ist unrelevant.
Danke für die Inspiration.

wp_xyz
Beiträge: 5189
Registriert: Fr 8. Apr 2011, 09:01

Re: Memo Lade Anzeige

Beitrag von wp_xyz »

hbr hat geschrieben: Mo 22. Jul 2024, 10:08 Die Idee war am Anfang und am Ende den Type des Bildes nicht nur Automatisch der Typen z.B. „data:image/jpeg;base64, oder url('data:image/jpeg;base64,..... ') „ einzutragen, sondern auch Händisch.
Händisch heißt, du willst den ewig langen String in ein TEdit laden und die Typ-Bezeichnungen von der Hand anfügen? Warum das denn? Du riskierst, dass der User Sch... baut, oder Lazarus wegen des langen Strings im TEdit zickt. Mache dir eine RadioGroup oder eine Combobox mit den in Frage kommenden Strings und einen Butten "Diesen String voranstellen", Dann erzeugst du einen ersten Stream, in den du den ausgewählten Typ-String schreibst, sowie einen zweiten, in den du den Base64-String einliest und den du dann in den ersten String kopierst. Es würde mich wundern, wenn das, auch bei einer großen Datei länger als eine Sekunde dauern würde.

Benutzeravatar
theo
Beiträge: 10921
Registriert: Mo 11. Sep 2006, 19:01

Re: Memo Lade Anzeige

Beitrag von theo »

Genau deshalb interessiert mich immer der Hintergrund/Kontext der Frage.
Manchmal ist der Plan schon fragwürdig und das führt dann zu Verrenkungen beim programmieren, die eigentlich nicht sein müssten.
Dann palavert man seitenweise über irgendwelche Details ohne den Murks in der Grundidee zu erkennen.

Mathias
Beiträge: 6955
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Memo Lade Anzeige

Beitrag von Mathias »

Ist es nach Möglichkeit nicht besser, wen man eine StringList über Add Zeilenweise befüllt, als ein ganzer Block über StringList Text ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10921
Registriert: Mo 11. Sep 2006, 19:01

Re: Memo Lade Anzeige

Beitrag von theo »

Mathias hat geschrieben: Di 23. Jul 2024, 08:42 Ist es nach Möglichkeit nicht besser, wen man eine StringList über Add Zeilenweise befüllt, als ein ganzer Block über StringList Text ?
1. Warum? Bei welcher Ausgangslage?
2. Was hat ein TMemo mit einer TStringList zu tun?
3. Wie viele Zeilen hat ein Base64 Code?

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Memo Lade Anzeige

Beitrag von hbr »

Ich habe es nun so gelöst, das man über zwei TEdit im Manuellen Modus den Anfang und das Ende eingeben kann "weil das Ende bei url(" die Zeichen ")')" enthält.

Aber für das anschauen eines base64 Files ohne jegliche Kopfdaten weis ich natürlich erst mal nicht, welches Bildformat in der Base64 Datei steckt.

Aber das TImage weis es!

Meine Frage also, wie frage ich das TImage ab, welcher Typ Bitmap steckt im TImage, da man es ja wissen muss, wenn man dieses mit Kopfdaten abspeichern will.

Zur Zeit ermittele ich diese aus der Bezeichnung der Kopfzeile.
Aber das geht ja nur, wenn es sich um ein base64 fiele für html handelt.
Anders wäre besser.

Benutzeravatar
theo
Beiträge: 10921
Registriert: Mo 11. Sep 2006, 19:01

Re: Memo Lade Anzeige

Beitrag von theo »

hbr hat geschrieben: Di 23. Jul 2024, 10:10 Meine Frage also, wie frage ich das TImage ab, welcher Typ Bitmap steckt im TImage, da man es ja wissen muss, wenn man dieses mit Kopfdaten abspeichern will.

Code: Alles auswählen

Image1.Picture.Graphic.MimeType;       

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Memo Lade Anzeige

Beitrag von hbr »

theo hat geschrieben: Di 23. Jul 2024, 10:33

Code: Alles auswählen

Image1.Picture.Graphic.MimeType;       
Vielen Dank!

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Memo Lade Anzeige

Beitrag von hbr »

Also ich weis nicht, warum ich mir so viel Arbeit mit der Filterung der Verschiedenen Image Typen und so weiter, mache, wenn es überhaupt gar nicht nötig ist für das anzeigen einer Datei in Browser'n.

Ganz egal was es für Formate sind,
data:image/svg+xml;base64, funktioniert in allen gängigen Browser , egal ob url oder Imagetype

Es funktioniert auch immer data:image/;base64, .

Wozu gibt es denn so viele Deklarationen?
Nur zur Unterscheidung? Seltsam.

Antworten