Date: prev next · Thread: first prev next last
2025 Archives by date, by thread · List index


Hallo Horst,

das ist so kaum zu klären. Wir wissen ja nicht einmal, was im Fehlerfall passiert. Kommt ein irgendwie falsches Ergebnis? Oder eine Fehlermeldung der Basic IDE? Ob Basic einen Fehler liefert, siehst du ja gar nicht, dazu müsstest du hinter der Sprungmarke

   fehler:

z.B. ein

   msgbox err & "  " & error

einfügen, um Nummer und Klartext der Fehlermeldung auszugeben.

Auch die sonstige Beschreibung ist noch sehr unklar:

 * Heißt "beim neuen Hochfahren", dass das problematische Programm
   dabei (wie auch immer) automatisch abläuft? Oder ist " nach dem
   Wiederanmelden" o. ä. gemeint?
 * Was heißt "Neustart des Programms"? Ist ein erneuter Aufruf von
   test123 gemeint, oder Schließen und erneutes Starten von
   LibreOffice? oder des Betriebssystems?

So etwas müsste man wissen, um überhaupt Ideen zu entwickeln, wie man weiterkommen könnte.

Dass die Funktion Mid einen Fehler haben soll, halte ich für sehr unwahrscheinlich, aber um das abzusichern: Du könntest mein Testprogramm abspeichern und das genauso testen wie es nun mit deinem Programm war, nachdem der Computer im Ruhezustand war. Wenn dieses Programm immer richtig läuft, dann liegt es nicht an der Funktion Mid.

Eine vage Idee habe ich wenigstens:
Bei deinem Code fällt mir auf, dass f nicht per dim deklariert ist; offenbar hast du auch nicht zu Beginn die Anweisung "option explicit", die erzwingt, dass alle verwendeten Variablen per dim definiert werden müssen. Das ist eine empfehlenswerte Sicherheitsmaßnahme, die verhindert, dass Variable mit unerwarteten Typen verwendet werden.
Du könntest mal
dim f as integer, a as string, i as integer
hinzufügen. Ich habe zwar keine konkrete Idee, warum das etwas helfen könnte, aber durch andere Programme, die zwischendrin gelaufen sind, könnte die Variablen anderweitig definiert/belegt sein, das könnte evtl etwas ausmachen. Auf jeden Fall wäre das Programm damit sauberer, weil eindeutig definiert.
Übrigens ist auch die Zeile

   c2zahl = ""

am Ende nicht sauber, da das Ergebnis eine Doublezahl sein soll;

   c2zahl = 0

wäre da klarer.

Gruß

Gerhard


Am 18.01.2025 um 14:12 schrieb officetechnik:
Hallo,

Leider ist das Problem doch nicht behoben! Zu früh gefreut.

Der Fehler im u.a. Programm trat wieder auf. Zwischenzeitlich war der
Computer im Ruhezustand. Beim neuen Hochfahren trat der Fehler wieder
auf.  Nach neustart des Programms war er wieder weg.

Also meine Vermutung, dass das Programm Sich verändert im Ruhezusand
scheint zu stimmen. Was kann man tun?

Horst

Am 17.01.2025 um 07:39 schrieb officetechnik:
Hallo,

danke für den Hinweis.

Ich habe jetzt auf die neueste Version 24.8.24.2 geupdatet und da
funktioniert es. Also entweder bereits gefixt oder das Programm ist
durch den Ruhezustand erodiert. Mein anderer Bug mit
msgbox("Alle Kategorien auswerten?",3+256) 'gibt als Vorgabe "Abbrechen"

bleibt leder

Horst

Am 17.01.2025 um 00:31 schrieb Gerhard Weydt:
Hallo Horst,

ich habe mir zunächst nicht die Mühe gemacht, deinen Code zu
verstehen, sondern selber folgenden Test gemacht:

sub test

dim a as string

a = "a,b.c"
msgbox mid(a,2,1) & "  " & mid(a,4,1)

end sub

Die Msgbox gibt wie erwartet ", ." zurück.

Und dein Programm, das ich dann doch probiert habe, liefert bei mir
22376,93, was ich nach dem Code auch erwarten würde. Warum das
allerdings als Warnung ausgegeben wird, weiß ich nicht. Ich habe den
print-Befehl, den ich nie verwende, durch msgbox ersetzt, was ja an
der Funktionsweise von mid nichts ändert, und bekomme auch da 22376,93
als Ergebnis.
Wo ist da ein Problem?

Getestet mit 7.6.4.1 unter Windows

Grüße

Gerhard


Am 16.01.2025 um 23:51 schrieb officetechnik:
Hallo,

ich habe ein Dokument, dass unter Openoffice erstellt wurde . Das ist
schon eine Weile her.

Jetzt gibt mir das eine falsche Ausgabe.
Anscheinend gibt mid() Komma, leerzeichen u.a. als 0 zurück.

hier der vollständige code wichtig ist nur a zu verfolgen.

Horst


sub test123
print c2zahl("22.376,93 $")
end sub

'''''''''''''##########
function c2zahl(stext as string) as double
dim stext2 as string
for f =1 to len(stext)
   a=mid(stext,f,1)
    if isnumeric(a) then stext2=stext2 & a
    if a="," then stext2=stext2 & a
    'if a="." then stext2=stext2 & a
next f
on error goto fehler
i=cdbl(trim(stext2))
c2zahl=i
exit function
fehler:
on error goto 0
c2zahl=""

end function






--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.