Zum neuen Informatik-Forum >>
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

String Pointer - Funktion
Gehe zu Seite 1, 2, 3  Weiter
 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> Visual Basic
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
mercany



Anmeldungsdatum: 04.10.2005
Beiträge: 33
Wohnort: Bielefeld (NRW)

BeitragVerfasst am: 04. Nov 2005 14:36    Titel: String Pointer - Funktion Antworten mit Zitat

Hallo!

Ich habe eine Frage zur Funktion StringPointer.
Ich benutze diese, um bei Inputboxen den Klick auf "Abbrechen" zu definieren.


Beispiel:
Code:

Option Explicit
Dim zahl As Double

Private Sub CommandButton_Click ()

zahl = inputbox("Bitte geben Sie eine Zahl ein", "Eingabe")
If strptr(zahl) = 0 Then Exit Sub

msgbox "Die Zahl, die Sie eingegeben haben lautet: " & zahl, "Ausgabe"


End Sub



Ich weiß: Kein tolles Bsp., aber mir ist grad nichts besseres eingefallen. smile

Auf jeden Fall ist es jetzt so, dass das Ganze in der Prozedur oftmals bei nur bei einigen Inputboxen funktionert.
Gestern z.B. hat es bei 7 Stück wunderbar funktioniert, bei 2 Stück aber nicht!


Woran kann das liegen? Vielleicht an der Deklaration der Variablen?!



Gruß, mercany

_________________
"Dummheiten sind nie überflüssig"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TMSearcher



Anmeldungsdatum: 19.05.2005
Beiträge: 270
Wohnort: Bremen

BeitragVerfasst am: 05. Nov 2005 04:47    Titel: Antworten mit Zitat

Hi,
versuch doch einfach festzulegen, dass auf jeden Fall eine Zahl zurückgegeben wird.
Also:
Code:
zahl = Val(InputBox("Bitte geben Sie eine Zahl ein", "Eingabe"))


Denn es kann sein, dass die Antwort der InputBox mal eine Zahl oder aber auch ein String ist und dann past es natürlich nicht.

grübelnd Was machst du da eigentlich mit dem Stringpointer?


Gruß
TMS

_________________
Intelligent life is so very rare,
the rarest thing in creation
and the most precious
This is Earth Calling..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
mercany



Anmeldungsdatum: 04.10.2005
Beiträge: 33
Wohnort: Bielefeld (NRW)

BeitragVerfasst am: 05. Nov 2005 13:18    Titel: Antworten mit Zitat

TMSearcher hat Folgendes geschrieben:
Hi,
versuch doch einfach festzulegen, dass auf jeden Fall eine Zahl zurückgegeben wird.
Also:
Code:
zahl = Val(InputBox("Bitte geben Sie eine Zahl ein", "Eingabe"))


Denn es kann sein, dass die Antwort der InputBox mal eine Zahl oder aber auch ein String ist und dann past es natürlich nicht.


Hmm, verstehe nicht so ganz was du meinst....
Also Punkt ist ja, dass StrPtr() wohl nur mit String läuft. Man hatte mir jetzt den Tip gegeben, dass ich die Variablen vor der Benutzung von StrPtr() umändern soll in String und anschliessend eben wieder zurückwandeln.

Hab aber nicht genau den Plan, wie das gemeint ist grübelnd


TMSearcher hat Folgendes geschrieben:

grübelnd Was machst du da eigentlich mit dem Stringpointer?

Ähm, wie meinst du das?

Also ich lass eben überprüfen, ob da wirklich nen Nullstring vorliegt; weil dann wurde ja Abbrechen gedrückt. Weil meiner Meinung nach, wird doch bei einer leeren Eingabe eben einfach ne leere Zeichenkette zurückgegeben, und das ist doch ein Unterschied. Und ich dachte, diesen Unterschied würde StrPtr() eben erkennen.



mfg, mercany


Gruß
TMS

_________________
"Dummheiten sind nie überflüssig"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
mercany



Anmeldungsdatum: 04.10.2005
Beiträge: 33
Wohnort: Bielefeld (NRW)

BeitragVerfasst am: 05. Nov 2005 15:35    Titel: Antworten mit Zitat

TMSearcher hat Folgendes geschrieben:
Hi,
versuch doch einfach festzulegen, dass auf jeden Fall eine Zahl zurückgegeben wird.
Also:
Code:
zahl = Val(InputBox("Bitte geben Sie eine Zahl ein", "Eingabe"))
[/quote]

Hab das mal versucht.... jetzt habe ich aber das Prob, dass er mir die Werte immer Ganzzahlig mach, und das ist nicht so toll!!


PS: Hab mein Dok mal drangehängt.



mfg, mercany

_________________
"Dummheiten sind nie überflüssig"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
mercany



Anmeldungsdatum: 04.10.2005
Beiträge: 33
Wohnort: Bielefeld (NRW)

BeitragVerfasst am: 06. Nov 2005 20:58    Titel: Antworten mit Zitat

So: Wollte nur mal kurz bescheid geben, dass ich das Prob gelöst habe!

Ich hab die Variablen normal als String deklariert, damit kann StrPtr() ja etwas anfangen und hab dann hinterher zum rechnen mit den Variablen einfach CDbl benutzt um da die Ausgabe in Double umzuwandeln.



mfg, mercany

_________________
"Dummheiten sind nie überflüssig"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TMSearcher



Anmeldungsdatum: 19.05.2005
Beiträge: 270
Wohnort: Bremen

BeitragVerfasst am: 06. Nov 2005 21:32    Titel: Antworten mit Zitat

Thumbs up! Super!
Hi,
grübelnd korrigier mich, wenn ich falsch liege. Aber ich dachte StrPtr(string) ist eine Funktion die einen String mit NULL terminiert, um ihn UNICODE fähig zu machen und damit einsetzbar für API-Aufrufe die eben UNICODE verlangen.


Gruß
TMS
PS.: unglücklich bin leider noch nicht dazu gekommen deine Übungsaufgabe genauer anzusehen.

_________________
Intelligent life is so very rare,
the rarest thing in creation
and the most precious
This is Earth Calling..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
mercany



Anmeldungsdatum: 04.10.2005
Beiträge: 33
Wohnort: Bielefeld (NRW)

BeitragVerfasst am: 06. Nov 2005 22:21    Titel: Antworten mit Zitat

Hallo TMS! Wink

Macht nichts; denn so war ich ja gezwungen mich ausgiebiger mit dem Problem auseinanderzusetzen und konnte somit im Endeffekt wieder einiges dazulernen.


Zu StrPtr():
Es kommt ja doch noch öfters mal vor, dass man statt Userform's noch an der ein oder anderen Stelle ne InputBox benutzt.
Wenn du nun aber mal den Button Abbrechen umberücksichtigt lässt und deine Prozedur startest, ist ja klar, dass bei druck auf OK, die Prozedur weiterläuft, bei druck auf Abbrechen springt sie dir jedoch mit nem Fehler raus. (Diese Erfahrung musste ich bis jetzt zumindest immer machen)

Jetzt kommt StrPtr() ins Spiel, da anders als bei der MsbBox wo du es über vbcancel machen konntest, dies bei der Inputbox nicht funktioniert.


Das Große Problem ist erstmal, dass dir sowohl beim Klick auf Abbrechen, als auch bei Klick auf Ok mit leerer Eingabe (also wenn du nichts in die Inputbox reinschreibst) eine "Null-Zeichenfolge" zurückgegeben wird.

Auch wenns auf den ersten Blick gleich aussieht, haben beide Fälle einen großen Unterschied: Bei Klick auf OK + leerer Eingabe wirft der Datenzeiger "" aus, bei Klick auf Abbrechen jedoch eine "0" (vbNullString).

Und um genau dies zu überprüfen benutzt du StrPtr(string-variabel)!


Beispiel:

Code:
Private Sub
Dim variabel As String

variabel = inputbox("Bitte gib deinen Namen ein")
If StrPtr(variabel) = 0 Then
  Exit Sub

Else
  If StrPtr(variabel) = "" Then
    msgbox "Es wurde keine Name eingegeben"

  Else
    msgbox "Dein Name lautet: " & variabel

  EndIf
EndIf

End Sub



Also wie du siehst: Ganz simpel die Anwedung!
Aber ich denke mal, das was ich hier gerade so "viel zu ausgiebig" erklärt habe, war dir doch sowieso schon klar... und das was du da meintest bzgl. API: Da hab ich keine Ahnung! Ich bin doch gerade erst seit nem Monat dabei mich mit VB(A) zu beschäftigen..... Augenzwinkern



mfg, mercany

_________________
"Dummheiten sind nie überflüssig"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TMS
Gast





BeitragVerfasst am: 06. Nov 2005 22:37    Titel: Antworten mit Zitat

Hi,
man lernt immer dazu, ich muss das mal überdenken grübelnd

Aber es scheint ja zu funktionieren..
Big Laugh

Ok, bis denn..

Gruß
TMS
Nach oben
mercany



Anmeldungsdatum: 04.10.2005
Beiträge: 33
Wohnort: Bielefeld (NRW)

BeitragVerfasst am: 07. Nov 2005 20:52    Titel: Antworten mit Zitat

Hallo TMS!

Freut mich, wenn ich dich auch um einen kleinen Fetzen an Infos bereichern konnte smile
Berichte doch bitte dann mal von deinen Überlegungen, würde mich interessieren was du da mit API im Kopf hattest!



Gruß, mercany

_________________
"Dummheiten sind nie überflüssig"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TMS
Gast





BeitragVerfasst am: 09. Nov 2005 22:43    Titel: Antworten mit Zitat

Hi,
lese dir einfach mal diesen Link durch StrPtr , diese Funktion gibt dir einen Pointer auf einen String zurück. Deshalb mein Grübeln, diese Funktion ist definitiv falsch eingesetzt und das geht mit an Sicherheit grenzender Wahrscheinlichkeit irgendwann nach hinten los. Wo hast du die her? Diese Funktion ist ein Teil um DLL's mit einzubinden und nicht offiziell dokumentiert.

grübelnd

Gruß
TMS
Nach oben
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> Visual Basic Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen