Seite 1 von 3
Pointer?Wenn ja-WIE?
Verfasst: 20.08.2005 11:37
von Tafkadasom2k5
Und da bin ich schon wieder....
Ja-war gerade dabei mirn paar Procedures zu schreiben die ich in Programmen meistens brauche....
Aaaaber: warum geht folgender Code nicht richtig:
Code: Alles auswählen
Global WhichChars.s
Global HowManyChars
Procedure CheckCharsDetail(Eingabe.s,Notallowed.s)
For I=1 To Len(Eingabe.s)
Analyze.s = Mid(Eingabe.s,I,1)
For A=1 To Len(Notallowed.s)
If Analyze.s = Mid(Notallowed.s,A,1)
If Details.s = ""
Details.s = Details.s + Mid(Notallowed.s,A,1)
Else
Details.s = "," + Mid(Notallowed.s,A,1)
EndIf
HowMany.l = HowMany + 1
EndIf
Next
Next
If HowMany > 0
ProcedureReturn(1)
Debug HowMany = Howmanychars
Debug Details = WhichChars.s
Else
ProcedureReturn(0)
EndIf
EndProcedure
Er gibt mir nicht mal im Debug Window die Ergebnisse aus-heisst ja folglisch, dass die Variable "HowMany" nie 0 überschreitet-bloss wieso nicht...?
Danke....
Marc
(P.S.: Wenn das mit Pointern funktionieren sollte-kann man auch Strings per pointer verweisen?Und -wie geht das in PB? In der Hilfe steht was mit "*"....aber das funktioniert irgendwie auch ned....zumindets ned bei mir...
Ich habe PureBasic Vollversion 3.91)
Re: Pointer?Wenn ja-WIE?
Verfasst: 20.08.2005 11:56
von crossroads
Tafkadasom2k5 hat geschrieben:Und da bin ich schon wieder....
Ja-war gerade dabei mirn paar Procedures zu schreiben die ich in Programmen meistens brauche....
Aaaaber: warum geht folgender Code nicht richtig:
Code: Alles auswählen
Global WhichChars.s
Global HowManyChars
Procedure CheckCharsDetail(Eingabe.s,Notallowed.s)
For I=1 To Len(Eingabe.s)
Analyze.s = Mid(Eingabe.s,I,1)
For A=1 To Len(Notallowed.s)
If Analyze.s = Mid(Notallowed.s,A,1)
If Details.s = ""
Details.s = Details.s + Mid(Notallowed.s,A,1)
Else
Details.s = "," + Mid(Notallowed.s,A,1)
EndIf
HowMany.l = HowMany + 1
EndIf
Next
Next
If HowMany > 0
ProcedureReturn(1)
Debug HowMany = Howmanychars
Debug Details = WhichChars.s
Else
ProcedureReturn(0)
EndIf
EndProcedure
Er gibt mir nicht mal im Debug Window die Ergebnisse aus-heisst ja folglisch, dass die Variable "HowMany" nie 0 überschreitet-bloss wieso nicht...?
Danke....
Marc
(P.S.: Wenn das mit Pointern funktionieren sollte-kann man auch Strings per pointer verweisen?Und -wie geht das in PB? In der Hilfe steht was mit "*"....aber das funktioniert irgendwie auch ned....zumindets ned bei mir...
Ich habe PureBasic Vollversion 3.91)
Debug-Zeilen ändern:
Code: Alles auswählen
Debug "HowMany = " + Str(Howmanychars)
Debug "Details = " + WhichChars.s
Verfasst: 20.08.2005 12:05
von Tafkadasom2k5
"HowMany" und "WhichChars" sollen Variablen später sein, die an die Main-Schleife übergeben werden..... Aber diese Variablen werden ja (mit oder ohne Debug) nicht an die Schleife übergeben-warum nicht?
Verfasst: 20.08.2005 13:20
von jear
Code: Alles auswählen
If HowMany > 0
ProcedureReturn(1)
Debug HowMany = Howmanychars
Debug Details = WhichChars.s
Else
ProcedureReturn(0)
EndIf
Mit
ProcedureReturn(1) ist die Abarbeitung in der Prozedur abgeschlossen.
Die folgenden Debug-Statements sind so witz- und zwecklos.
Schreibe sie einfach vor das
ProcedureReturn(1).
Zu den falschen Debug-Statements selbst hast Du ja schon Hinweise bekommen.
Richtig wäre also, abgesehen von den anderen Kinken im Kode, an dieser Stelle :
Code: Alles auswählen
If HowMany > 0
Debug "HowMany = " + Str(Howmany) ; chars) ???
Debug "Details = " + WhichChars ; ??? wird in der Prozedur nicht gesetzt !
ProcedureReturn(1)
Else
ProcedureReturn(0)
EndIf
Hinweise :
- Variablen nur einmal vereinbaren
- in der Prozedur die dort vereinbarten Variablen benutzen
- was soll denn in String Details gesammelt werden?
Verfasst: 22.08.2005 10:46
von Tafkadasom2k5
OK-soweit alles klar....nun sieht der code (Mit folgendem Besipiel-Code) aus
Code: Alles auswählen
Procedure CheckCharsDetail(Eingabe.s,Notallowed.s)
For I=1 To Len(Eingabe.s)
Analyze.s = Mid(Eingabe.s,I,1)
For A=1 To Len(Notallowed.s)
If Analyze.s = Mid(Notallowed.s,A,1)
If Details.s = ""
Details.s = Details.s + Mid(Notallowed.s,A,1)
Else
Details.s = Details + "," + Mid(Notallowed.s,A,1)
EndIf
HowMany.l = HowMany + 1
EndIf
Next
Next
If HowMany > 0
Debug HowMany
Debug Details
ProcedureReturn(1)
Else
ProcedureReturn(0)
EndIf
EndProcedure
Eingabe.s = InputRequester("Eingabe","Wort eingeben das geprüft werden soll","")
Notallowed.s = InputRequester("Eingabe","Buchstaben eingeben, auf die das Wort geprüft werden soll (z.B. 'abcdefg123')","")
CheckCharsDetail(Eingabe,Notallowed)
Hoffe ihr könnt mir weiterhelfen...
Achja-danach müsste man die Variable "HowMany" und den String "Details" in die Mainschleife übergeben können-wie funktioniert das?also mit "Global" gehts nicht und mit nem Sternchen davor (also als Pointer) gings uch ned.....)
Danke für alles ersmal-und bitte-seid nachsichtig mit meinen Fehlern und erklärt sie mir-ich wills ja lernen...
Der Marc
EDIT: Meinen ersten (trotteligen Fehler) behoben....

Verfasst: 22.08.2005 10:52
von Kiffi
> BTW: Der funktioniert auch nicht richtig vollständig
vielleicht magst Du mir erklären, was die [c]CheckCharsDetail()[/c]
überhaupt bezwecken willst. U.U. könnte ich dann erkennen, was an dieser
Prozedur fehlerhaft ist.
Grüße ... Kiffi
Verfasst: 22.08.2005 10:57
von Tafkadasom2k5
Hab ich schon behoben-warn Denkfehler meinerseits und der war nicht im Code (Logisch das er bei "DerMarc" und "Der" "D,e,r,r" heraussucht.... -ich hatt das R in Arne vergessen......) *mirgewaltig vor den Kopfschlag*
Ich will mir ne .pbi schreiben, in der alles das drinne ist, was ich meistens brauche wenn ich ein Programm schreibe-nur zum Training und weil ich da lust zu habe.....Ausserdem braucht man sowas ja immer mal...
Ok-jetzt nur noch die Sache mit der Übergabe der Variablen....
Also wie gibt man nen String und ne Variable in die Main-Schleife?
Gr33tz
Der Marc
Verfasst: 22.08.2005 11:11
von Kiffi
Tafkadasom2k5 hat geschrieben:(Logisch das er bei "DerMarc" und "Der" "D,e,r,r" heraussucht.... -ich hatt das R in Arne vergessen......)
ja, nee, is klar!
Tafkadasom2k5 hat geschrieben:
Ok-jetzt nur noch die Sache mit der Übergabe der Variablen....
Also wie gibt man nen String und ne Variable in die Main-Schleife?
wie Du bereits geschrieben hast: Deklariere die Variable als 'Global' und
somit ist sie überall bekannt. Wenn's bei Dir nicht funktioniert, musst Du was
falsch gemacht haben.
Grüße ... Kiffi
Verfasst: 22.08.2005 11:16
von Tafkadasom2k5
ja, nee, is klar! Laughing
Naja-jetzt scheints zu gehen...war bloss ne Sache der Variablen....
Vielen Dank ersmal....
Aer noch ne plöde Frage:
Wie setzt man dann n Pointer ein?Und wozu gibt es Pointer, wenn man doch eh den Befehl "Global" dafür missbraucht?
Verfasst: 22.08.2005 11:36
von Kiffi
> Wie setzt man dann n Pointer ein?
(PB) Was sind 'Pointer' und wie benutzt man diese?:
http://forums.purebasic.com/german/viewtopic.php?t=19
> Und wozu gibt es Pointer, wenn man doch eh den Befehl "Global" dafür
> missbraucht?
oh, dann hast Du mich falsch verstanden. Globale Deklarationen von
Variablen haben nichts direkt mit Pointern zu tun. Sie dienen nur dazu,
Variablen, die man in mehreren Prozeduren oder Funktionen benötigt, eben
auch dort verwenden zu können.
Grüße ... Kiffi