Funktionen : Return?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Compix

Betreff: Funktionen : Return?

BeitragDi, Jan 25, 2011 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin es (malwieder) Smile

Nun habe ich noch eine kurze Frage zu Funktionen.
https://www.blitzforum.de/uplo...?show=2326

In diesem Code sieht man eine Struktur die ich mir ausgedacht habe als MySQL-Ersatz und meine Funktion zum Auslesen.
Das alle Felder bisauf ID, USERNAME und PASSWORD falsche Daten auslesen ist mir bekannt und ich arbeite morgen da weiter dran, aber wenn ich mir PASSWORD ausgeben lasse, erhalte ich "0". Diesen Fehler hatte ich bisher bei vielen Funktionen und habe es daher ohne gemacht. Nun ist es aber einfach mal nötig und daher würde ich gerne wissen wo mein Fehler ist.

Mit freundlichen Grüßen
 

n-Halbleiter

BeitragDi, Jan 25, 2011 0:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Stichwort: Rückgabetyp.

Deine Funktion gibt formal einen Integer zurück (% oder Nichts am Ende des Funktionsnamens). Du möchtest, dass die Funktion einen String zurückgibt, also musst du ihren Rückgabetypen auf String ($) ändern.
Link zur Onlinehilfe: Function, da steht an sich das, was du wissen musst.
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)

ToeB

BeitragDi, Jan 25, 2011 1:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Außerdem ist es nicht sinnvoll den String so zu zerlegen, es ist 1. unübersichtlich und bietet nicht viel Platz für modifikationen. Hier mal eine 5-min Funktion :
Code: [AUSKLAPPEN]
Function AccountData$( txt$, get, z$="|" )

   If Right( txt$, Len( z$ ) ) <> z$ Then txt$ = txt$ + z$
   If Left( txt$, Len( z$ ) ) <> z$ Then txt$ = z$ + txt$
   
   Local Pos = 1, LastPos = 1, count = 0
   While count < get
      
      LastPos = Pos
      Pos = Instr( txt$, z$, LastPos+1 )
      
      count = count + 1
      
   Wend
   
   LastPos = LastPos+Len(z$)
   txt2$ = Mid( txt$, LastPos, Pos-LastPos )
   
   
   Return txt2$
   
End Function

Const POS_NAME = 1
Const POS_PASS = 2
Const POS_MAIL = 3
Const POS_PMSG = 4


Local Daten$ = "ToeB|Pudding|test@web.de|Hallo !"

Print AccountData$( Daten$, POS_NAME )
Print AccountData$( Daten$, POS_PASS )
Print AccountData$( Daten$, POS_MAIL )
Print AccountData$( Daten$, POS_PMSG )

WaitKey( )



Was die Funktion macht ? Sie sucht zuerst nach dem Zeichen an der Stelle an der man den Text auslesen möchte, speichert vorher immer das letzte Zeichen ab. Danach, wenn die Stelle gefunden wurde, wird der Teil des Strings extrahiert und ausgegeben. Damit kannst du nicht nur beliebig große Zeichenketten mit untersuchen, sondern das Trennzeichen ist Variable und kann sogar mehrere Zeichen umfassen (z.B. "/n" oder so). Und dadurch das ich nicht jedes zeichen durchgehe ist der Algo schon recht schnell, als erst alle Sachen auszulesen und dann das gewünschte wiederzugeben Wink

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group