Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  kleines game

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  kleines game (904 mal gelesen)
startrek
Moderator
Architekt


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 01. Jul. 2005 22:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Leute,

mal eine kleine Spielerei zum w/e, dachte bislang immer Getstring ist ein äquivalent zur Inputbox.
Naja beinahe, beim getstring schaff ich's nicht, das 'Esc' ohne on Error abzufangen.
Geht das eigentlich überhaupt 'ohne on error' mit getstring? Ein strptr() geht da absolut in die Hosen ...

Also - Headhunterfrage - wer handelt ein getstring() und ESC ohne es mit on Error krachen zu lassen ? ;-)

Code:

Sub input_box()
  Dim x, s As String
  x = InputBox("was eingeben oder auch nicht")
  If StrPtr(x) = 0 Then
      s = "cancel"
  ElseIf x = vbNullString Then
      s = "keine Eingabe"
  Else
      s = x
  End If
  MsgBox s
End Sub

Sub get_string()
  Dim x, s As String
  On Error Resume Next
  x = ThisDrawing.Utility.GetString(1, "was eingeben oder nicht")
  If IsEmpty(x) Then
      MsgBox "cancel"
      Exit Sub
  End If
  On Error GoTo 0
  If Len(x) = 0 Then s = "keine Eingabe" Else s = x
  MsgBox s
End Sub



lg Nancy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

BloodyMess
Mitglied
Applicationingenieur


Sehen Sie sich das Profil von BloodyMess an!   Senden Sie eine Private Message an BloodyMess  Schreiben Sie einen Gästebucheintrag für BloodyMess

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 05. Jul. 2005 11:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für startrek 10 Unities + Antwort hilfreich


ESCHook.dll.txt

 
Hallo Nancy,

habe lange überlegt und viele Möglichkeiten durchgespielt, in wie fern ich dein Problem befriedigend lösen könnte.

1te Möglichkeit (ON Error)
---------------

Code:
Sub get_string()

Dim strX As String
Dim strS As String

    'tritt ein Fehler auf springt er in den ErrorHandler
    On Error GoTo ErrorHandler
        strX = ThisDrawing.Utility.GetString(1, "was eingeben oder nicht: ")
    'fehlerbehandlung wieder ausschalten
    On Error GoTo 0
   
    'If IsEmpty(strX) Then
    '    MsgBox "cancel"
    '    Exit Sub
    'End If
   
    If Len(strX) = 0 Then
        strS = "keine Eingabe"
    Else
        strS = strX
    End If
   
    MsgBox strS

Exit Sub
 
'da er in diesen Abschnitt des Codes trotzdem reinlaufen würde, wird vorher exit sub gesetzt
ErrorHandler:
    Select Case Err.Number
      Case "-2147352567"
          MsgBox "Es wurde ESC gedrueckt ... Was nun?"
      Case Else
          MsgBox "Der Fehler ist unbehandelt"
    End Select
   
    'resume next macht mit der zeile nach dem fehler weiter
    'resume versucht die zeile nochmals auszuführen, in der der fehler auftrat .. bis er nicht mehr auftritt .. 
    Resume Next
 
End Sub



... das gefiel Dir ja nicht, oder zumindest war das nicht deine Anforderung .. 


2te Möglichkeit
---------------

Wäre ein Event zu registrieren, welches auf einen Tastendruck reagiert. Like 'OnKeyDown' ... usw. ... diese Möglichkeit besteht ja nur in Formularen. Wusst auch nicht so genau, wie man das machen konnte ausser mit der WinAPI ...


3te Möglichkeit
---------------
Einfach das drücken der EscapeTaste abzufangen und somit das Ereignis unwirksam zu machen. Hmmm ... riecht auch stark nach API ...


Die Lösung (ohne On Error!):
----------------------------
Ist eine Kombination aus 2 und 3. Es werden die bestehenden Hooks für die EscapeTaste abgefangen und bei einem OnKeyEvent ignoriert. Es wird also auf die deutsch die Funktionalität von Escape vorübergehend ausgehebelt, wenn die Taste betätigt wird.

Nen bissle Lektüre dazu findest Du unter ... http://dotnet.mvps.org/vb/articles/keyboardhook/ ...

Die Dll über die Verweise einbinden und nachfolgenden Code benutzen. Konnte es derzeit nur unter Acad 2002 testen!

Code:
Sub get_string()

    Dim esc As New ESCHook.clsEsc
    esc.disable_esc

    Dim x As String
    x = ThisDrawing.Utility.GetString(1, "was eingeben oder nicht")
 
    esc.enable_esc
 
End Sub


Ist keine schöne Lösung, aber eine ohne 'OnError' .. 

Viele Grüsse TP

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

startrek
Moderator
Architekt


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 05. Jul. 2005 15:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo TP,

wow, Du hast Dich ja richtig reingehangen, Danke :-)
Naja Problem, war mehr so aus Neugier, ob's geht,
aber nach deinem Probiere und meinem [hab' auch nochmal ein F1 auf 'GetInput'  gesetzt},
gehts wohl ohne sich einen Arm auszurenken, nicht ohne On Error ab.
Die Methode scheint schlicht und ergreifend einen Error zu produzieren bei ESC ...
Dachte ja auch ich kann ihn austricksen, aber nixda, geht auch nur mit Error;-)

Code:

Sub x()
  Dim x()
  On Error Resume Next
  x = Array(ThisDrawing.Utility.GetString(0, "was eingeben oder auch nicht: "))
  On Error GoTo 0
  If Not (Not x) Then MsgBox x(0) Else MsgBox "canceled"
End Sub

Nochmal Danke für's Mitknobeln und noch much Fun beim Hacken,
die 13 und die 15 sind glaube nochmal kniffelig;-)

lg Nancy 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz