Pointer?Wenn ja-WIE?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Pointer?Wenn ja-WIE?

Beitrag 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)
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
crossroads
Beiträge: 244
Registriert: 29.08.2004 05:41
Wohnort: Rhine Main Area

Re: Pointer?Wenn ja-WIE?

Beitrag 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
Man soll die Tür aufmachen, bevor man durchgeht ...
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag 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?
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag 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?
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag 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... :allright:

Der Marc <)

EDIT: Meinen ersten (trotteligen Fehler) behoben.... :allright: <)
Zuletzt geändert von Tafkadasom2k5 am 22.08.2005 10:52, insgesamt 1-mal geändert.
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag 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
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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! :lol:
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
a²+b²=mc²
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

ja, nee, is klar! Laughing
:oops: :oops: :oops: :oops: :oops:

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?
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Antworten