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.