Xojo Developer Conference
25/27th April 2018 in Denver.
MBS Xojo Conference
6/7th September 2018 in Munich, Germany.

schnelle Listbox (Real Studio network user group Deutschland Mailinglist archive)

Back to the thread list
Previous thread: socket/server timeout?
Next thread: Probleme mit RealSQlServer


Probleme mit String Bearbeitung   -   Markus Schnell
  schnelle Listbox   -   Stefan Sicurella
   Re: schnelle Listbox   -   Andy Fuchs
    Re: schnelle Listbox   -   Stefan Sicurella
    Re: schnelle Listbox   -   Claudius Sailer
    Re: schnelle Listbox   -   Stefan Sicurella
    Re: schnelle Listbox   -   Tilopâ Monk <
    Re: schnelle Listbox   -   Stefan Mettenbrink
    Re: schnelle Listbox   -   Claudius Sailer
    Re: schnelle Listbox   -   Claudius Sailer
    Re: schnelle Listbox   -   Tilopâ Monk <
    Re: schnelle Listbox   -   Stefan Sicurella
    Re: schnelle Listbox   -   Stefan Sicurella
    Re: schnelle Listbox   -   Carsten Friehe
    Re: schnelle Listbox   -   Stefan Sicurella
    Re: schnelle Listbox   -   Stefan Mettenbrink
    Re: schnelle Listbox   -   Stefan Sicurella
    Re: schnelle Listbox   -   Claudius Sailer
    Re: schnelle Listbox   -   Stefan Sicurella
    Re: schnelle Listbox   -   Claudius Sailer
    Re: schnelle Listbox   -   Tilopâ Monk <
    Re: schnelle Listbox   -   Stefan Sicurella
    Re: schnelle Listbox   -   Stefan Mettenbrink
    Re: schnelle Listbox   -   "Dietmar Plaßmann" <

schnelle Listbox
Date: 29.08.06 19:21 (Tue, 29 Aug 2006 20:21:01 +0200)
From: Stefan Sicurella
Hallo,

ich fülle eine 6-spaltige Listbox mit über 4000 Einträgen, das wird
jetzt ziemlich lahm,
auch wenn ich das Füllen in einen Thread lege hilft das nicht viel
außer, dass die app nicht blockiert ist.
Hat hierzu jemand schon mal eine gute Lösung erarbeitet?

Gruß

Stefan

Re: schnelle Listbox
Date: 29.08.06 19:27 (Tue, 29 Aug 2006 20:27:08 +0200)
From: Andy Fuchs
> Hat hierzu jemand schon mal eine gute Lösung erarbeitet?

Beim füllen unsichtbar machen....

andy

Re: schnelle Listbox
Date: 29.08.06 19:27 (Tue, 29 Aug 2006 20:27:56 +0200)
From: Stefan Sicurella
bringt kaum etwas... habe ich sowieso schon drin

Gruß

Stefan
>> Hat hierzu jemand schon mal eine gute Lösung erarbeitet?
>
> Beim füllen unsichtbar machen....
>
> andy
>

Re: schnelle Listbox
Date: 29.08.06 19:53 (Tue, 29 Aug 2006 20:53:05 +0200)
From: Claudius Sailer
Welches RB?

Am 29.08.2006 um 20:27 schrieb Stefan Sicurella:

> bringt kaum etwas... habe ich sowieso schon drin
>
> Gruß
>
> Stefan
>>> Hat hierzu jemand schon mal eine gute Lösung erarbeitet?
>>
>> Beim füllen unsichtbar machen....

ich nutze PagePanel und blende ein und aus. Unsichtbar machen brachte
in RB 200X nix mehr (bei mir). Ich fülle ca 4000 Datensätze 7
sichtbaren Spalten in ca 1,2-1,3 sec threaded.

Ich habe meinen Code stark zerlegt und analysiert und zum Teil
Performancefresser gefunden wo ich dachte das geht flott.

Zum Testen habe ich im Code immer wieder.

#if DebugBuild then
StartTick=ticks
#Endif

CODE

#if DebugBuild then
MsgBox("Listbox füllen benötigte Sekunden: " + CStr((ticks -
StartTick)/60))
#Endif

Das hat einiges ans Licht gebracht.

Vielleicht ist auch Deine Listbox-Füllmethode nicht optimal!!!

Ciao

Claudius

--
iMac

Re: schnelle Listbox
Date: 29.08.06 20:20 (Tue, 29 Aug 2006 21:20:14 +0200)
From: Stefan Sicurella
Hi,

2006R3

das ist nur ein Datenbank Query das so lange die Liste füllt bis
keine Datensätze mehr vorhanden sind.
6 sichtbare Spalten mit 4500 Einträgen dauert 4 Sekunden.. allerdings
unter Rosetta und ohne Thread.
Mit Thread kommt es mir gleich schnell vor, außer dass die app nicht
geblockt ist.
Na ja, R4 ist ja bald fertig, als UB sollte es dann nur 2 Sekunden
dauern, damit kann ich dann leben.

Gruß

Stefan
> Welches RB?
>
> Am 29.08.2006 um 20:27 schrieb Stefan Sicurella:
>
>> bringt kaum etwas... habe ich sowieso schon drin
>>
>> Gruß
>>
>> Stefan
>>>> Hat hierzu jemand schon mal eine gute Lösung erarbeitet?
>>>
>>> Beim füllen unsichtbar machen....
>
> ich nutze PagePanel und blende ein und aus. Unsichtbar machen
> brachte in RB 200X nix mehr (bei mir). Ich fülle ca 4000 Datensätze
> 7 sichtbaren Spalten in ca 1,2-1,3 sec threaded.
>
> Ich habe meinen Code stark zerlegt und analysiert und zum Teil
> Performancefresser gefunden wo ich dachte das geht flott.
>
> Zum Testen habe ich im Code immer wieder.
>
> #if DebugBuild then
> StartTick=ticks
> #Endif
>
> CODE
>
> #if DebugBuild then
> MsgBox("Listbox füllen benötigte Sekunden: " + CStr((ticks -
> StartTick)/60))
> #Endif
>
> Das hat einiges ans Licht gebracht.
>
> Vielleicht ist auch Deine Listbox-Füllmethode nicht optimal!!!
>
> Ciao
>
> Claudius
>
> --
> iMac CD 2GHz / MacOS X 10.4de / RB 2006r3/ Valentina 2.4.1
> Homepage http://www.ClaSai.de
> iChat ryhoruk
> RealBasic ListBoxes: [ I feel the need...the need for speed!!! ]
>

Re: schnelle Listbox
Date: 29.08.06 21:15 (Tue, 29 Aug 2006 22:15:42 +0200)
From: Tilopâ Monk <
Am schnellsten geht's, wenn man die Daten virtuel speichert, und nur
die sichtbaren Daten in die listbox holt. So schafft man ein paar
hunderttausend Datensätze in 1 - 2 Sekunden
Tilopâ
Am 29.08.2006 um 20:27 schrieb Andy Fuchs:

>> Hat hierzu jemand schon mal eine gute Lösung erarbeitet?
>
> Beim füllen unsichtbar machen....
>
> andy
>

Tilopâ Monk
<email address removed>
<email address removed>

<email address removed>
Besuchen Sie http://tilopamonk.com
http://tilopamonk.de
http://ateliershop.de

Re: schnelle Listbox
Date: 30.08.06 03:53 (Wed, 30 Aug 2006 04:53:24 +0200)
From: Stefan Mettenbrink
Tilopâ Monk wrote:

> Am schnellsten geht's, wenn man die Daten virtuel speichert, und nur
> die sichtbaren Daten in die listbox holt. So schafft man ein paar
> hunderttausend Datensätze in 1 - 2 Sekunden

Man verliert dadurch aber die Möglichkeit, die Tabelle durch Klick auf
die Headerzeile zu sortieren. Oder man müsste das auch selber
programmieren.

MfG, Metti.

Re: schnelle Listbox
Date: 30.08.06 05:07 (Wed, 30 Aug 2006 06:07:30 +0200)
From: Claudius Sailer

Am 29.08.2006 um 22:15 schrieb Tilopâ Monk:

> Am schnellsten geht's, wenn man die Daten virtuel speichert, und
> nur die sichtbaren Daten in die listbox holt. So schafft man ein
> paar hunderttausend Datensätze in 1 - 2 Sekunden

Klar,
bei mir scheitert das an 2 Dingen.
Ich habe berechnete Zellen die auf vorigen Zellen referenzieren und
eine Suchfunktion. Ich weiss nicht wie Du virtuell speicherst, aber
geht dass damit dann auch noch? Wie speicherst Du virtuell? Kostet
die ganze Berechnung nicht auch Zeit?

Ciao

Claudius

--

Re: schnelle Listbox
Date: 30.08.06 05:09 (Wed, 30 Aug 2006 06:09:38 +0200)
From: Claudius Sailer

Am 29.08.2006 um 21:20 schrieb Stefan Sicurella:

> Hi,
>
> 2006R3
>
> das ist nur ein Datenbank Query das so lange die Liste füllt bis
> keine Datensätze mehr vorhanden sind.
> 6 sichtbare Spalten mit 4500 Einträgen dauert 4 Sekunden..
> allerdings unter Rosetta und ohne Thread.
> Mit Thread kommt es mir gleich schnell vor, außer dass die app
> nicht geblockt ist.
> Na ja, R4 ist ja bald fertig, als UB sollte es dann nur 2 Sekunden
> dauern, damit kann ich dann leben.

wie sieht die schleife aus?
Ich habe Performance gewonne indem ich erst ermittelte wie viele
Datensätze da sind und dann eine For-Next-Schleife nehme. Das ist
dann echt schneller gewesen. Was für eine Datenbank hast Du? Bei
Valentina kann man da auch nochmal was rauskitzeln mit der Art des
Auslesens.

Claudius

--
iM

Re: schnelle Listbox
Date: 30.08.06 06:52 (Wed, 30 Aug 2006 07:52:01 +0200)
From: Tilopâ Monk <
Bei Valentina arbeite ich mit vBitSet oder vArraySet, je nachdem,
abhängig von den Daten und der Datenmenge. Dass man im Header nicht
sortieren kann, stimmt nicht. Methoden hab ich noch nicht
ausprobiert. Müsste aber gehen. Man kann ja auch auf Valentina für
solche Zwecke zugreifen. Ich lasse ziemlich komplizierte 2D Grafiken
über Formeln zeichnen. Das geht auch. Schau Dir mal ListboxOnDemand
an. Die ist auch superschnell, basiert auf der rbListbox, kostet aber
was. Die ist sicher für große Dateien geeignet.
Grüße Tilopâ
Am 30.08.2006 um 06:07 schrieb Claudius Sailer:

>
> Am 29.08.2006 um 22:15 schrieb Tilopâ Monk:
>
>> Am schnellsten geht's, wenn man die Daten virtuel speichert, und
>> nur die sichtbaren Daten in die listbox holt. So schafft man ein
>> paar hunderttausend Datensätze in 1 - 2 Sekunden
>
> Klar,
> bei mir scheitert das an 2 Dingen.
> Ich habe berechnete Zellen die auf vorigen Zellen referenzieren und
> eine Suchfunktion. Ich weiss nicht wie Du virtuell speicherst, aber
> geht dass damit dann auch noch? Wie speicherst Du virtuell? Kostet
> die ganze Berechnung nicht auch Zeit?
>
> Ciao
>
> Claudius
>
> --
> iMac CD 2GHz / MacOS X 10.4de / RB 2006r3/ Valentina 2.4.1
> Homepage http://www.ClaSai.de
> iChat ryhoruk
> RealBasic ListBoxes: [ I feel the need...the need for speed!!! ]
>

Tilopâ Monk
<email address removed>
<email address removed>

<email address removed>
Besuchen Sie http://tilopamonk.com
http://tilopamonk.de
http://ateliershop.de

Re: schnelle Listbox
Date: 30.08.06 07:11 (Wed, 30 Aug 2006 08:11:26 +0200)
From: Stefan Sicurella
ich benutze RealSQL, die Listbox wird während einer

while rs.eof
listbox addrow rs.idxfield usw
rs.movenext
wend

schleife gefüllt, da gibt es, meiner Meinung nach, nichts zu optimieren

Gruß

Stefan
>> Hi,
>>
>> 2006R3
>>
>> das ist nur ein Datenbank Query das so lange die Liste füllt bis
>> keine Datensätze mehr vorhanden sind.
>> 6 sichtbare Spalten mit 4500 Einträgen dauert 4 Sekunden..
>> allerdings unter Rosetta und ohne Thread.
>> Mit Thread kommt es mir gleich schnell vor, außer dass die app
>> nicht geblockt ist.
>> Na ja, R4 ist ja bald fertig, als UB sollte es dann nur 2 Sekunden
>> dauern, damit kann ich dann leben.
>
> wie sieht die schleife aus?
> Ich habe Performance gewonne indem ich erst ermittelte wie viele
> Datensätze da sind und dann eine For-Next-Schleife nehme. Das ist
> dann echt schneller gewesen. Was für eine Datenbank hast Du? Bei
> Valentina kann man da auch nochmal was rauskitzeln mit der Art des
> Auslesens.
>
> Claudius

Re: schnelle Listbox
Date: 30.08.06 07:40 (Wed, 30 Aug 2006 08:40:26 +0200)
From: Stefan Sicurella
die Listbox on demand ist beeindruckend, zwar etwas teuer aber sie
ist es wert

Gruß

Stefan
> Bei Valentina arbeite ich mit vBitSet oder vArraySet, je nachdem,
> abhängig von den Daten und der Datenmenge. Dass man im Header nicht
> sortieren kann, stimmt nicht. Methoden hab ich noch nicht
> ausprobiert. Müsste aber gehen. Man kann ja auch auf Valentina für
> solche Zwecke zugreifen. Ich lasse ziemlich komplizierte 2D
> Grafiken über Formeln zeichnen. Das geht auch. Schau Dir mal
> ListboxOnDemand an. Die ist auch superschnell, basiert auf der
> rbListbox, kostet aber was. Die ist sicher für große Dateien geeignet.
> Grüße Tilopâ
> Am 30.08.2006 um 06:07 schrieb Claudius Sailer:
>
>>
>> Am 29.08.2006 um 22:15 schrieb Tilopâ Monk:
>>
>>> Am schnellsten geht's, wenn man die Daten virtuel speichert, und
>>> nur die sichtbaren Daten in die listbox holt. So schafft man ein
>>> paar hunderttausend Datensätze in 1 - 2 Sekunden
>>
>> Klar,
>> bei mir scheitert das an 2 Dingen.
>> Ich habe berechnete Zellen die auf vorigen Zellen referenzieren
>> und eine Suchfunktion. Ich weiss nicht wie Du virtuell speicherst,
>> aber geht dass damit dann auch noch? Wie speicherst Du virtuell?
>> Kostet die ganze Berechnung nicht auch Zeit?
>>
>> Ciao
>>
>> Claudius
>>
>> --
>> iMac CD 2GHz / MacOS X 10.4de / RB 2006r3/ Valentina 2.4.1
>> Homepage http://www.ClaSai.de
>> iChat ryhoruk
>> RealBasic ListBoxes: [ I feel the need...the need for speed!!! ]
>>
> Tilopâ Monk
> <email address removed>
> <email address removed>
> <email address removed>
> Besuchen Sie http://tilopamonk.com
> http://tilopamonk.de
> http://ateliershop.de
>

Re: schnelle Listbox
Date: 30.08.06 07:55 (Wed, 30 Aug 2006 08:55:10 +0200)
From: Carsten Friehe
Hallo Stefan!

Ich kann da nur das DataGrid von Einhugur empfehlen. Das ist speziell für
Datenbankzugriffe gedacht und holt z.B. aus einem select nur de Zeilen
heraus, die auch wirklich angezeigt werden. Eine Sortierung geht dann
einfach dadurch, daß Du einen neuen select machst und die Sortierkriterien
änderst.

Carsten

Re: schnelle Listbox
Date: 30.08.06 08:01 (Wed, 30 Aug 2006 09:01:50 +0200)
From: Stefan Sicurella
Danke,

sehe ich mir auch mal an...

Gruß

Stefan
> Hallo Stefan!
>
> Ich kann da nur das DataGrid von Einhugur empfehlen. Das ist
> speziell für
> Datenbankzugriffe gedacht und holt z.B. aus einem select nur de Zeilen
> heraus, die auch wirklich angezeigt werden. Eine Sortierung geht dann
> einfach dadurch, daß Du einen neuen select machst und die
> Sortierkriterien
> änderst.
>
> Carsten

Re: schnelle Listbox
Date: 30.08.06 15:31 (Wed, 30 Aug 2006 16:31:24 +0200)
From: Stefan Mettenbrink
Stefan Sicurella wrote:

> while rs.eof

Ist hier nicht jedes Mal eine Überprüfung auf EOF?
Da wäre eine For-Next Schleife möglicherweise doch schneller.

MfG, Metti.

Re: schnelle Listbox
Date: 30.08.06 15:53 (Wed, 30 Aug 2006 16:53:44 +0200)
From: Stefan Sicurella
Hi,

hm, meinst du?
Aber wie soll ich dann wissen wann mein Query eof ist?

Gruß

Stefan

>> while rs.eof
>
> Ist hier nicht jedes Mal eine Überprüfung auf EOF?
> Da wäre eine For-Next Schleife möglicherweise doch schneller.
>
> MfG, Metti.

Re: schnelle Listbox
Date: 30.08.06 16:57 (Wed, 30 Aug 2006 17:57:58 +0200)
From: Claudius Sailer
Hi Stefan,

also das while rs.eof ist definitiv langsamer als eine For-Next-
Schleife.
gibt es kein rs.numberofrecords oder so?
Unter Valentina gibt es da was und dann ne for-next schleife das ist
schnell :-))

Am 30.08.2006 um 16:53 schrieb Stefan Sicurella:

> Hi,
>
> hm, meinst du?
> Aber wie soll ich dann wissen wann mein Query eof ist?
>
> Gruß
>
> Stefan
>
>>> while rs.eof
>>
>> Ist hier nicht jedes Mal eine Überprüfung auf EOF?
>> Da wäre eine For-Next Schleife möglicherweise doch schneller.
>>
>> MfG, Metti.
>

Claudius

--
i

Re: schnelle Listbox
Date: 30.08.06 17:00 (Wed, 30 Aug 2006 18:00:41 +0200)
From: Stefan Sicurella

Hi,

doch, klar gibt es das... ich teste es mal morgen.

Gruß

Stefan

> Hi Stefan,
>
> also das while rs.eof ist definitiv langsamer als eine For-Next-
> Schleife.
> gibt es kein rs.numberofrecords oder so?
> Unter Valentina gibt es da was und dann ne for-next schleife das
> ist schnell :-))
>
> Am 30.08.2006 um 16:53 schrieb Stefan Sicurella:
>
>> Hi,
>>
>> hm, meinst du?
>> Aber wie soll ich dann wissen wann mein Query eof ist?
>>
>> Gruß
>>
>> Stefan
>>
>>>> while rs.eof
>>>
>>> Ist hier nicht jedes Mal eine Überprüfung auf EOF?
>>> Da wäre eine For-Next Schleife möglicherweise doch schneller.
>>>
>>> MfG, Metti.
>>
> Claudius
>
> --
> iMac CD 2GHz / MacOS X 10.4de / RB 2006r3/ Valentina 2.4.1
> Homepage http://www.ClaSai.de
> iChat ryhoruk
> RealBasic ListBoxes: [ I feel the need...the need for speed!!! ]
>

Re: schnelle Listbox
Date: 30.08.06 17:00 (Wed, 30 Aug 2006 18:00:43 +0200)
From: Claudius Sailer
Hi,

Am 30.08.2006 um 07:52 schrieb Tilopâ Monk:

> Bei Valentina arbeite ich mit vBitSet oder vArraySet, je nachdem,
> abhängig von den Daten und der Datenmenge.

kannst Du damit auch Berechnungen ausgeben die auf die vorige Zeile
referenzieren?
Das ist mein Problem :-((

Beispiel:

Kontostand in Zeile 10 errechnet sich aus Kontostand in Zeile 9
+Zugang - Abgang aus Zeile 10 ....
Das kriege ich per SQL nicht hin. Alles wird von Listbox-Zeile 0 aus
ausgerechnet....

Ciao

Claudius

--

Re: schnelle Listbox
Date: 30.08.06 17:38 (Wed, 30 Aug 2006 18:38:55 +0200)
From: Tilopâ Monk <
Das hab ich noch nicht gebraucht, also weis ich es nicht. Ich kann
jedoch eine Serie von Zeilen überschreiben, mit einer Checkbox
markieren und am Ende updaten oder löschen, auch wenn die markierten
Zeilen nicht mehr sichtbar sind. Demnach müsste das Referenzieren
untereinander auch gehen. Das mach ich über den Cursor und einem
Referenzarray. Wie das allerdings bei der rbDatabase geht, weis ich
nicht. Die hab ich noch nie benutzt. Bau Dir eine Superklasse mit
einem Eventhandler, der die Daten über den Cursor reinzieht. Dort
kannst Du sicher alles machen, was Du brauchst.
Am 30.08.2006 um 18:00 schrieb Claudius Sailer:

> Hi,
>
> Am 30.08.2006 um 07:52 schrieb Tilopâ Monk:
>
>> Bei Valentina arbeite ich mit vBitSet oder vArraySet, je nachdem,
>> abhängig von den Daten und der Datenmenge.
>
> kannst Du damit auch Berechnungen ausgeben die auf die vorige Zeile
> referenzieren?
> Das ist mein Problem :-((
>
> Beispiel:
>
> Kontostand in Zeile 10 errechnet sich aus Kontostand in Zeile 9
> +Zugang - Abgang aus Zeile 10 ....
> Das kriege ich per SQL nicht hin. Alles wird von Listbox-Zeile 0
> aus ausgerechnet....
>
> Ciao
>
> Claudius
>
> --
> iMac CD 2GHz / MacOS X 10.4de / RB 2006r3/ Valentina 2.4.1
> Homepage http://www.ClaSai.de
> iChat ryhoruk
> RealBasic ListBoxes: [ I feel the need...the need for speed!!! ]
>

Tilopâ Monk
<email address removed>
<email address removed>

<email address removed>
Besuchen Sie http://tilopamonk.com
http://tilopamonk.de
http://ateliershop.de

Re: schnelle Listbox
Date: 31.08.06 09:34 (Thu, 31 Aug 2006 10:34:11 +0200)
From: Stefan Sicurella

Hi Claudius,

ja, es ist ca 20% schneller, unglaublich, hätte ich nie gedacht

Gruß

Stefan

> Hi Stefan,
>
> also das while rs.eof ist definitiv langsamer als eine For-Next-
> Schleife.
> gibt es kein rs.numberofrecords oder so?
> Unter Valentina gibt es da was und dann ne for-next schleife das
> ist schnell :-))
>
> Am 30.08.2006 um 16:53 schrieb Stefan Sicurella:
>
>> Hi,
>>
>> hm, meinst du?
>> Aber wie soll ich dann wissen wann mein Query eof ist?
>>
>> Gruß
>>
>> Stefan
>>
>>>> while rs.eof
>>>
>>> Ist hier nicht jedes Mal eine Überprüfung auf EOF?
>>> Da wäre eine For-Next Schleife möglicherweise doch schneller.
>>>
>>> MfG, Metti.
>>
> Claudius
>
> --
> iMac CD 2GHz / MacOS X 10.4de / RB 2006r3/ Valentina 2.4.1
> Homepage http://www.ClaSai.de
> iChat ryhoruk
> RealBasic ListBoxes: [ I feel the need...the need for speed!!! ]
>

Re: schnelle Listbox
Date: 31.08.06 14:41 (Thu, 31 Aug 2006 15:41:04 +0200)
From: Stefan Mettenbrink
Stefan Sicurella wrote:

> ja, es ist ca 20% schneller, unglaublich, hätte ich nie gedacht

Und das bei so wenig Aufwand :-)
Das lohnt sich.

MfG, Metti.

Re: schnelle Listbox
Date: 31.08.06 15:27 (Thu, 31 Aug 2006 16:27:50 +0200)
From: "Dietmar Plaßmann" <
> > ja, es ist ca 20% schneller, unglaublich, hätte ich nie gedacht
>
> Und das bei so wenig Aufwand :-)
> Das lohnt sich.

Ein Kollege hat hier verschiedene Tests gemacht, um zu sehen wie sich VisualBasic beschleunigen lässt. Dabei sind unglaubliche Zahlen bei heraus gekommen, etliches lässt sich um 1000% und mehr beschleunigen.

Ich hoffe das lässt sich nicht auf RB umsetzen, denn dann bekämen wir unsaubere Programme :-)

Wenn es jemanden interessiert, dann kann ich mir die Liste ja mal geben lassen. Könnte ich eh gebrauchen, momentan muss ich mich in ein VB-Projekt einarbeiten, welches man mir aufs Auge gedrückt hat.

Dietmar
--

Der