Power Basic-Chat-Testen
Verfasst: 24.01.2006 17:26
Hiho!
Ich versuche mich gerade während meine Praktikum mit PowerBasic.
Es wäre toll, wenn ihr mir bei meinen ersten Gehversuchen helfen könnten...
Ich habe mich hier an einem Chat versucht, und habe eigentlich nur aus "rumgebastel" herausgefunden, wie ich zB die UDP-Notify einbauen muss, damit PB ned meckert.Obs funktioniert is ne andere Sache...
Und hiermit fordere ich alle Power-Basic Kenner auf:
Debuggt meinen Source und/oder testet ihn
Gr33tz
Tafkadasom2k5

Ich versuche mich gerade während meine Praktikum mit PowerBasic.
Es wäre toll, wenn ihr mir bei meinen ersten Gehversuchen helfen könnten...
Ich habe mich hier an einem Chat versucht, und habe eigentlich nur aus "rumgebastel" herausgefunden, wie ich zB die UDP-Notify einbauen muss, damit PB ned meckert.Obs funktioniert is ne andere Sache...
Und hiermit fordere ich alle Power-Basic Kenner auf:
Debuggt meinen Source und/oder testet ihn

Gr33tz
Tafkadasom2k5
Code: Alles auswählen
#PBFORMS CREATED V1.51
#COMPILE EXE
#DIM ALL
'------------------------------------------------------------------------------
' ** Includes **
'------------------------------------------------------------------------------
#PBFORMS BEGIN INCLUDES
#IF NOT %DEF(%WINAPI)
#INCLUDE "WIN32API.INC"
#ENDIF
#PBFORMS END INCLUDES
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Constants **
'------------------------------------------------------------------------------
#PBFORMS BEGIN CONSTANTS
%IDD_DIALOG1 = 101
%IDC_TEXTAUSGABE = 1001
%IDC_TEXTEINGABE = 1002
%IDC_BUTTON_Senden = 1003
%WM_Empfangen = 10000
#PBFORMS END CONSTANTS
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Declarations **
'------------------------------------------------------------------------------
DECLARE CALLBACK FUNCTION ShowDIALOG1Proc()
DECLARE FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
#PBFORMS DECLARATIONS
DECLARE FUNCTION Empfangen() AS STRING
GLOBAL hDlg AS DWORD
GLOBAL myserver AS LONG
GLOBAL myname AS STRING
'------------------------------------------------------------------------------
'Meine Funktionen
FUNCTION ip2num (BYVAL sIP AS STRING) AS LONG
LOCAL ix AS LONG
LOCAL nResult AS LONG
LOCAL pb AS BYTE PTR
pb = VARPTR(nResult) + SIZEOF(nResult) - 1
FOR ix = 4 TO 1 STEP -1
@pb = VAL(PARSE$(sIP, ".", ix))
DECR pb
NEXT
FUNCTION = nResult
END FUNCTION
FUNCTION empfangen() AS STRING
LOCAL sendIP&
LOCAL sendPort&
LOCAL mytext AS STRING
UDP RECV myserver, FROM sendIP, sendPort, myText
FUNCTION = myText
END FUNCTION
FUNCTION sendText(BYVAL newtext AS STRING) AS LONG
LOCAL ip&
ip = ip2num("192.168.73.255")
UDP SEND myserver, AT ip , 2323, newtext
END FUNCTION
FUNCTION setText(BYVAL newtext AS STRING) AS LONG
LOCAL oldtext AS STRING
CONTROL GET TEXT hdlg, %IDC_TEXTAUSGABE TO oldtext
newtext = CHR$(oldtext,13,10,newtext)
CONTROL SET TEXT hdlg, %IDC_TEXTAUSGABE, newtext
END FUNCTION
FUNCTION GetName() AS STRING
LOCAL myName AS STRING
WHILE myname = ""
myname = INPUTBOX$("Geben Sie Ihren Namen ein:",, "")
WEND
FUNCTION = myname
END FUNCTION
FUNCTION OeffneServer(BYVAL myPort AS LONG) AS LONG
LOCAL myServer AS LONG
LOCAL myError AS LONG
myserver = FREEFILE
UDP OPEN PORT 2323 AS myserver TIMEOUT 1000
IF ERR THEN
MSGBOX "Konnte Port nicht oeffnen oder UDP-Server nicht starten!"
myError = 1
ELSE
UDP NOTIFY myServer, RECV TO hdlg AS %WM_Empfangen
END IF
IF myError <> 1 THEN
FUNCTION = 1
ELSE
FUNCTION = 0
END IF
END FUNCTION
'Ende meiner Funktionen
'------------------------------------------------------------------------------
' ** Main Application Entry Point **
'------------------------------------------------------------------------------
FUNCTION PBMAIN()
ShowDIALOG1 %HWND_DESKTOP
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** CallBacks **
'------------------------------------------------------------------------------
CALLBACK FUNCTION ShowDIALOG1Proc()
SELECT CASE AS LONG CBMSG
CASE %WM_INITDIALOG
LOCAL myTEXT AS STRING
myname = getname()
IF oeffneserver(2323) THEN
CONTROL SET TEXT cbhndl,%IDC_TEXTAUSGABE, "Server erfolgreich geöffnet!"
ELSE
CONTROL SET TEXT cbhndl,%IDC_TEXTAUSGABE, "Konnte Server oder Port nicht öffnen...!"
END IF
CASE %WM_NCACTIVATE
STATIC hWndSaveFocus AS DWORD
IF ISFALSE CBWPARAM THEN
' Save control focus
hWndSaveFocus = GetFocus()
ELSEIF hWndSaveFocus THEN
' Restore control focus
SetFocus(hWndSaveFocus)
hWndSaveFocus = 0
END IF
CASE %WM_COMMAND
' Process control notifications
SELECT CASE AS LONG CBCTL
CASE %IDC_TEXTAUSGABE
CASE %IDC_TEXTEINGABE
CASE %IDC_BUTTON_Senden
IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN
CONTROL GET TEXT cbhndl, %IDC_TEXTEINGABE TO myTEXT
CONTROL SET TEXT cbhndl, %IDC_TEXTEINGABE, ""
myText = myName + ": " + myText
setText(myTEXT)
sendText(myText)
END IF
CASE %WM_Empfangen
settext(empfangen())
END SELECT
END SELECT
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Dialogs **
'------------------------------------------------------------------------------
FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
LOCAL lRslt AS LONG
#PBFORMS BEGIN DIALOG %IDD_DIALOG1->->
DIALOG NEW hParent, "Marc-Chat Version 1.0", 244, 137, 201, 132, _
%WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR %WS_CAPTION OR _
%WS_SYSMENU OR %WS_MINIMIZEBOX OR %WS_MAXIMIZEBOX OR _
%WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME OR %DS_3DLOOK OR _
%DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_CONTROLPARENT OR %WS_EX_LEFT _
OR %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR, TO hDlg
CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTAUSGABE, "", 5, 5, 185, 90, %WS_CHILD _
OR %WS_VISIBLE OR %ES_LEFT OR %ES_MULTILINE OR %ES_AUTOHSCROLL OR _
%ES_READONLY, %WS_EX_CLIENTEDGE OR %WS_EX_LEFT OR %WS_EX_LTRREADING _
OR %WS_EX_RIGHTSCROLLBAR
CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTEINGABE, "", 5, 100, 150, 25, _
%WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %ES_LEFT OR %ES_MULTILINE _
OR %ES_AUTOHSCROLL, %WS_EX_CLIENTEDGE OR %WS_EX_LEFT OR _
%WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR
CONTROL ADD BUTTON, hDlg, %IDC_BUTTON_Senden, "Absenden", 160, 105, 40, _
15
#PBFORMS END DIALOG
DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt
#PBFORMS BEGIN CLEANUP %IDD_DIALOG1
#PBFORMS END CLEANUP
FUNCTION = lRslt
END FUNCTION
'-------------------------------ENDE-------------------------------------
