Ich musste heute eine Reihe von sechsstelligen Zahlen diktieren. Normalerweise lassen sich in Dragon Ziffernfolgen sehr schön und sehr schnell diktieren, indem man einfach eine nach der anderen aufzählt. Diesmal allerdings, und ich bin nicht dahinter gekommen, warum dies (plötzlich?) so ist, formatierte der Drachen alle Ziffernfolgen, die auch nur in die Nähe eines Datums kamen, als Datum. Beispiel „null-sechs-eins-zwei-null-neun" wird nicht etwa geschrieben "061209", sondern 06.12.2009. Die automatische Formatierung des Datums in der gezeigten Form hatte ich schon immer eingestellt, weil dies die Präzision, dass ein diktiertes Datum verstanden wird, in meiner Wahrnehmung erhöht, aber dass jetzt offensichtlich auch Ziffernfolgen als Datum geschrieben werden, deren innere Logik dies hergibt, irritiert mich etwas.
Gibt es da eine Abhilfe?
DNS 15.3 Professional Individual auf Windows 10 Home (64-bit) Plantronics PLT Savi W440 Intel (R) Core (TM) i7-7500 2,7 GHz 8 GB RAM 64 Bit
Zwei Ideen: 1. Ist das Häkchen gesetzt bei „in formatierten Ausdrücken Pausen erlauben“? 2. Was passiert, wenn der Schieberegler in der Registerkarte „Befehle“ verändert wird und dort die Pause vor Befehlen verändert wird?
Laptop: Intel Core 2 Duo P8700 (2,53 GHz, 3 MB L2 Cache), 4 GB RAM, Windows 7 32-Bit, DPI 15, MS Office 2007, Olympus DR-1000, Samson GoMic PC: Intel i5, Windows 7 64-bit, Dragon NaturallySpeaking 13 Prof, MS Office 2013
Folgende Idee hätte ich dazu, auch wenn das der ursprünglichen Schilderung nicht 100-prozentig entspricht.
Wenn man eine Kombination aus sechs Zahlen in einem bestimmten „Format“ diktiert, wird das sehr häufig und unweigerlich automatisch als Datum ausgegeben, Beispiel:
null sechs zwölf null neun – 06.12.2009 zwölf null acht vierzehn – 12.08.2014 usw.
Ob das hier vielleicht der Fall war?
_______________________________________
Dragon Professional 16 auf Windows 10 Pro und Windows 11 SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo) HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD
Ich habe jetzt mal die Box bei „In formatierten Ausdrücken Pausen erlauben" gecheckt, und jetzt nimmt der Drachen auch Zahlenkombinationen an, aus denen er bisher ein Datum gemacht hat. Dafür sind aber jetzt Kombinationen wie 300 10 nicht zu diktieren, ohne „Leertaste" zwischen 300 und 10 zu sagen. sonst macht er daraus 310. Mann hat also letztlich, so wie es scheint, nur die Wahl zwischen zwei Übeln.
DNS 15.3 Professional Individual auf Windows 10 Home (64-bit) Plantronics PLT Savi W440 Intel (R) Core (TM) i7-7500 2,7 GHz 8 GB RAM 64 Bit
Wenn ich 0-6-1-2-0-9 diktiere, erhalte ich 061209, genau wie gewünscht.
Bei mir ist die automatische Formatierung des Datums auch aktiviert in dem Format 06.12.2009. Pausen in formatierten Ausdrücken sind deaktiviert. Die Ziffernschreibung ist ab 13 eingestellt.
Wenn ich wie in Rüdiger Beispielen einzelne Ziffern zu höheren Zahlen zusammenziehe, wird der Ausdruck als Datum formatiert. Aber wieso sollte ich das tun, wenn ich kein Datum diktieren will?
Allerdings muss ich einräumen, dass ich in der Vergangenheit (mit älteren Versionen) auch schon fälschliche Datumsformatierungen erlebt habe, kann das aber gerade nicht reproduzieren.
Normalerweise schütze ich mich ohnehin davor, indem ich sechsstellige und achtstellige Zahlen nicht als einzelne Ziffern diktiere, sondern als korrektes Zahlwort, etwa einundsechzigtausendzweihundertneun. Das klappt freilich nicht, wenn eine führende Null gefordert ist. Wenn es hier zu hartnäckigen Fehlern kommt, ist der Tipp von Pascal die richtige Lösung (wie eigentlich immer).
Zitat von MeinhardNix Wahl zwischen zwei Übeln! Wenn ich 0-6-1-2-0-9 diktiere, erhalte ich 061209, genau wie gewünscht.
Sie Glücklicher! - Nach vielen Versuchen mit diversen datumstauglichen Zahlenfolgen habe ich aufgegeben: mal wird's ein Datum, mal nicht, rein zufällig.
Meinem Vorschlag, die Datumsformatierung bedarfsweise abzuschalten, möchte ich noch eine Unterstützung in Form eines Sprachbefehls "Datum " beifügen:
1 2 3 4 5 6
Sub Main Dim Eng As New DgnEngineControl Eng.ItnOption(dgnitnoptionNumberFormatDates) = (ListVar1="ein") End Sub
Pascal, könnten Sie einem Programmier-Laien wie mir freundlicherweise gelegentlich noch kurz erläutern, was dieser elegante Ausdruck macht? Ich versuche es in solchen Fällen immer mit einem If-Befehl, der den Status der Option abfragt und dann je nachdem auf den gegenteiligen Wert (True oder False) setzt (was viel umständlicher ist).
Ein Gleichheitszeichen hat in Programmiersprachen zwei Funktionen: einmal als Zuweisung von Werten an eine Variable, zum anderen als Vergleichsoperator. Das Gleichheitszeichen, das in einer Programmzeile von links als erstes vorkommt, wird als Zuweisung interpretiert, alle weiteren als Vergleichsoperatoren. Der Ausdruck Listvar1 = "ein" am Zeilenanfang würde also der Variablen ListVar1 den Wert "ein" zuweisen. Im vorliegenden Fall (2. Gleichheitszeichen!) ist der Ausdruck als Vergleich zu interpretieren und liefert einen booleschen Wert "wahr" oder "falsch". Dieser wird der Variablen Eng.ItnOption(... ) zugewiesen. Bei der Auflösung der Zeile werden zuerst alle Ausdrücke rechts vom Zuweisungs-Gleichheitszeichen berechnet, das Ergebnis dann der Variablen zugewiesen. Man könnte also auch auf die Klammern verzichten, ohne den Compiler zu verwirren, sie dienen lediglich der besseren Lesbarkeit. Gegen die If ... then ... else Konstruktion ist natürlich auch nichts einzuwenden außer, dass sowohl für "ein" als auch für "aus" genau diese Wörter gebraucht werden müssen. In meinem Fall ist nur das "ein" vorgeschrieben.
Gruß, Pascal
P.S. Etwas umständlich erklärt, ich hoffe, trotzdem verstanden worden zu sein.
Danke Pascal! Wenn ich Ihrer Beschreibung folge, dünkt es mich, als hätte ich sowas in ferner Vergangenheit sogar mal in der Schule gelernt.
Jaja, beim Programmieren ist es wie in anderen Sprachen, wie im Recht und wie in diesem Forum – wenn man die Konventionen nicht beherrscht, ist man verloren.
Zitat von P.RochEin Gleichheitszeichen hat in Programmiersprachen zwei Funktionen: einmal als Zuweisung von Werten an eine Variable, zum anderen als Vergleichsoperator.
Was für ein Glück, dass in den von mir bevorzugten "Basalsprachen" (C/C++/C# =(weniger)) das, u.v.m., klar unterschieden wird!
_______________________________________
Dragon Professional 16 auf Windows 10 Pro und Windows 11 SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo) HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD
... und was ist mit dem in C++ möglichen Ausdruck "a=b=c=d"? Für die Zuweisung gibt es in einigen Programmiersprachen die Zeichenkombination ":=", das Gleichheitszeichen allein ist da nur Vergleichsoperator. Mein Wunschtraum für alle Programmiersprachen. Aber das ist eigentlich kein Thema für ein Spracherkennungsforum. Viele Grüße, Pascal
Zitat von P.Roch... und was ist mit dem in C++ möglichen Ausdruck "a=b=c=d"?
Wenn ich mich nicht irre, wird daraus in C++ immer noch kein Vergleichsoperator, es handelt sich um eine verkettete Zuweisung. Der Compiler interpretiert das, rechts-assoziativ, als:
a = (b = (c = d)))
Das heißt, der Wert von d wird c zugewiesen, c wird b zugewiesen, und b wird a zugewiesen, der Reihe nach.
Aber es stimmt schon, dass das kein typisches Thema für das Forum ist.
_______________________________________
Dragon Professional 16 auf Windows 10 Pro und Windows 11 SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo) HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD
if ( a ) // wenn a wahr ist if ( !a ) // wenn a falsch ist
Oder noch weiter komprimiert:
a ? b : c;
Bedeutet: wenn a wahr ist, mach b, sonst mach c.
Das ist jedenfalls immer super-eindeutig und macht den Code sehr einfach zu lesen, im Unterschied zu Sprachen, wo Syntax-Elemente je nach Kontext eine andere Bedeutung haben können.
_______________________________________
Dragon Professional 16 auf Windows 10 Pro und Windows 11 SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo) HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD