![]() |
Anzeige:
|
|
|||||||
| XProfan Alles rund um die Programmiersprache XProfan. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Zum Thema Quellcode-Erkennung: Was meint ihr, mit welchen Befehlen/Funktionswörtern lässt sich ein XProfan-Quellcode am besten identifizieren? Was fehlt in quasi keinem Code?
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
|
#2 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 08.02.2009
Ort: Nußloch (bei Heidelberg)
Beiträge: 550
|
Hallo Frank,
ich denke mal, die meisten Programme benötigen WAITINPUT. Meines Wissens gibt es den Befehl in anderen Sprachen nicht. Gruß Roland
__________________
Pentium D 2,8 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon HD5450 1024 MB / Windows 7(32) - XProfan X2.0c AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 / Windows 7(64) - XProfan X2.0c http://www.xprofan.de |
|
|
|
|
|
#3 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Oder progend. Du kannst ja nach mehreren Indizien suchen.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#4 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
ProgEnd benutze ich selber nie, WaitInput ist wohl schon eine gute Wahl.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#5 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Aber mit mehreren Befehlen ist es sicherer.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
|
#6 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 10.786
|
Ich würde auch mehrere Sachen nehmen. WAITINPUT kommt bei mir zum Beispiel öfters nicht vor.
__________________
______________ Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert! Mfg AHT |
|
|
|
|
|
#7 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Gibt doch einen ganzen Haufen Profantypischer Befehle:
WhileLoop, EndWhile usw. ...
__________________
Gruß Thomas Wenn mir früher jemand gesagt hätte, ich würde freiwillig eine Wanze mit mir herum tragen und sie auch noch selbst aufladen, hätte ich laut gelacht. Heute habe ich ein Smartphone. http://realsource.de |
|
|
|
|
|
#8 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Ja, geht mir halt darum, mit möglichst wenig zeitfressendem Aufwand viele Codes zu identifizieren. Ich glaube, mit waitinput und endproc bin ich auf der sicheren Seite.
Schonmal danke für eure Vorschläge!
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#9 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
|
aber endproc kommt auch oft in anderen Sprachen vor. Profantypischer ist schon eher
Code:
Assign, reset, parameters oder vllt. whileloop. |
|
|
|
|
|
#10 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 759
|
Hallo
Assign und Reset ist nicht unbedingt profantypisch. Das hat Profan aus Pascal übernommen. Hier wäre dann eine tiefergehende Analyse notwendig. Wenn nach Zwischenraum kein # folgt, ist es kein Profan. Insgesamt denke ich, kann man das Problem nicht an einem einzelnen Schlüsselwort festmachen. Ich würde da eher mehrere Schlüsselworte nutzen und als Gegenprobe dann noch "typische" Ausdrücke aus anderen Sprachen als Ausschlußkriterium, Wird dann zwar aufwendig aber dürfte bei kluger Auswahl recht sicher sein. Gruß Volkmar |
|
|
|
|
|
|
#11 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Ich brauche nur eine Unterscheidung zwischen XProfan, PureBasic und Assembler. Da reichen die 2-3 Schlüsselworte ja.
Hintergrund ist mein in der Mache befindliche Lemon-Editor, der mit diesen Sprachen arbeiten soll, mit Hauptaugenmerk auf XProfan. Bei Assembler muss ich sicherstellen, das nicht nur XPIA-tauglicher Code verwendet wird.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#12 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Denk dran, PB unterstützt auch alle ASM-Wörter!
__________________
Gruß Thomas Wenn mir früher jemand gesagt hätte, ich würde freiwillig eine Wanze mit mir herum tragen und sie auch noch selbst aufladen, hätte ich laut gelacht. Heute habe ich ein Smartphone. http://realsource.de |
|
|
|
|
|
#13 (Direktlink) |
|
Stammuser
![]() Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
|
While, EndWhile und Waitinput ist auch nicht sicher, siehe hier :
Code:
'#############################
'API-basierende Vorlage :
'XProfan
'#############################
'Author : Andreas Miethe
'2004
'#############################
'Thema : Grundgerüst
'#############################
SetTrueColor 1
Set("FastMode",1)
'------------------------
'Header-Dateien einbinden
'------------------------
$H windows.ph
$H structs.ph
$H messages.ph
'------------------------
'------------------------
'Konstanten
'------------------------
DEF &MenuItem1 1
DEF &MenuItem2 2
DEF &MenuItem3 3
'------------------------
'------------------------
'Definitionen
'------------------------
DEF HiWord(1) And(&(1)>>16,$FFFF)
DEF LoWord(1) And(&(1),$FFFF)
DEF MakeLong(2) Or(&(1),&(2)<<16)
'------------------------
'------------------------
'Strukturen
'------------------------
STRUCT MyWindowClass = ~WndClass
STRUCT MyMsg = ~Msg
STRUCT Point = ~POINT
STRUCT PS = ~PAINTSTRUCT
'------------------------
'------------------------
'Globale Deklarationen
'------------------------
DECLARE WindowClass#, Msg#, Size#
DECLARE Window&
DECLARE hMenu&,hPopup&
DECLARE MPoint#
DECLARE Statusbar&
DECLARE PS#
DECLARE Accel#,AccelTable&
Declare Message&
'------------------------
'------------------------
'Includes
'------------------------
'------------------------
'------------------------
PROC CreateControls
'------------------------
'Fensterelemente anlegen
'Buttons usw. koennen mit
'den Profanbefehlen angelegt
'werden, muss kein API sein.
'------------------------
'-------------------------
'Menue anlegen
'-------------------------
hMenu& = ~CreateMenu()
hPopUp& = ~CreatePopupMenu()
~Appendmenu(hMenu&,~MF_POPUP | ~MF_STRING,hPopUp&,"Datei")
~Appendmenu(hpopup&,~MF_BYCOMMAND | ~MF_STRING,&MenuItem1,"Ende \tSTRG+C")
~SetMenu(Window&,hMenu&)
~DrawMenuBar(Window&)
'-------------------------
'InfoZeile anlegen
'-------------------------
Statusbar& = Create("Statuswindow",Window&,"")
'-------------------------
'AcceleratorTable anlegen
'-------------------------
DIM Accel#,18 'reicht für drei Tastenkombinationen
'in diesem Fall STRG+C und F10
'STRG+C
WORD Accel#,0 = ~FCONTROL | ~FVIRTKEY | ~FNOINVERT
WORD Accel#,2 = $43'VK_C
WORD Accel#,4 = &MenuItem1
'F10
'kann auf diese Weise genutzt werden. Natürlich auch alle anderen Tastenkombinationen.
WORD Accel#,6 = ~FVIRTKEY | ~FNOINVERT
WORD Accel#,8 = $79'VK_F10
WORD Accel#,10 = &MenuItem2
WORD Accel#,12 = ~FCONTROL | ~FVIRTKEY | ~FNOINVERT
WORD Accel#,14 = $0D'STRG+ENTER
WORD Accel#,16 = &MenuItem3
AccelTable& = ~CreateAcceleratorTable(Accel#,3)'Accelerator-Table mit zwei Einträgen anlegen
DISPOSE Accel#
ENDPROC
'------------------------
PROC OnEndSession
'------------------------
'Aufräumarbeiten
'------------------------
MessageBox("Windows will beenden! Das lassen wir nicht zu !","Meldung",64)
Return 0 ' 0 beendet Windows nicht, alles andere beendet Windows !
ENDPROC
'------------------------
PROC OnClose
'------------------------
'Aufräumarbeiten
'------------------------
MessageBox("und Tschüss !","Ende...",262144)
~DestroyAcceleratorTable(AccelTable&)
~UnRegisterClass(WindowClass#,%hinstance)
DISPOSE WindowClass#
~DestroyMenu(hMenu&)
~DestroyMenu(hPopUp&)
~PostQuitMessage(0)
ENDPROC
'------------------------
PROC OnHelp
'------------------------
'Hilfe
'------------------------
MessageBox("Hilfe gibt es hier noch nicht !","Meldung",64)
ENDPROC
'------------------------
PROC OnKontextMenu
'------------------------
'rechte Maustaste zeigt Menü an !
'------------------------
DIM mPoint#,Point
~GetCursorPos(mPoint#)
~TrackPopupMenu(hpopup&,~TPM_LEFTALIGN | ~TPM_RIGHTBUTTON,mPoint#.x&,mPoint#.y&,0,hWnd&,0)
DISPOSE mPoint#
ENDPROC
'------------------------
PROC OnResize
'------------------------
'auf Grössenänderung des Fensters reagieren
SetWindowPos Statusbar& = 0,0-0,0
ENDPROC
'------------------------
PROC OnPaint
'------------------------
'Neuzeichnen des Fensterinhaltes
DECLARE OldFont&
PARAMETERS DC&
OldFont& = ~SelectObject(DC&,~GetStockObject(~DEFAULT_GUI_FONT))
~SetBkMode(DC&,~Transparent)
~SetTextColor(DC&,RGB(0,0,255))
~TextOut(DC&,10,10,"Das ist ein RePaint-Test",24)
~SelectObject(DC&,OldFont&)
ENDPROC
'------------------------
PROC WindowCB
'------------------------
'WindowCallback fürs Hauptfenster
'------------------------
PARAMETERS hWnd&, hMsg&, wParam&, lParam&
'------------------------
IF hMsg& = ~WM_PAINT
'------------------------
'Neuzeichnen
DIM PS#,PS
OnPaint(~BeginPaint(hWnd&, PS#))
~EndPaint(hWnd&, PS#)
DISPOSE PS#
Return 0
ENDIF
'------------------------
IF hMsg& = ~WM_MENUSELECT
'------------------------
'ein Menüpunkt wird selektiert
IF LoWord(wParam&) = 1
Settext Statusbar&,"Programm beenden"
Else
Settext Statusbar&,""
ENDIF
Return 0
ENDIF
'------------------------
IF hMsg& = ~WM_EXITSIZEMOVE'Grössenänderung abgeschlossen
'------------------------
~InvalidateRect(Window&,0,0)
ENDIF
'------------------------
'------------------------
IF hMsg& = ~WM_SIZE'Grössenänderung des Fensters
'------------------------
Return OnResize()
ENDIF
'------------------------
'------------------------
IF hMsg& = ~WM_CONTEXTMENU'rechte Mautaste
'------------------------
Return OnKontextMenu()
ENDIF
'------------------------
'------------------------
IF hMsg& = ~WM_HELP'F1
'------------------------
Return OnHelp()
ENDIF
'------------------------
'------------------------
IF hMsg& = ~WM_QUERYENDSESSION'Windows-Ende
'------------------------
Return OnEndSession()
ENDIF
'------------------------
'------------------------
IF hMsg& = ~WM_CLOSE'Programm-Ende
'------------------------
OnClose
ENDIF
'------------------------
'------------------------
IF hMsg& = ~WM_COMMAND
'------------------------
IF LoWord(wParam&) = &MenuItem1 'MenuItem abfragen
SendMessage(hWnd&,~WM_CLOSE,0,0)
ENDIF
IF LoWord(wParam&) = &MenuItem2 'MenuItem abfragen
Messagebox("F10 gedrückt !","Meldung",64)
ENDIF
IF LoWord(wParam&) = &MenuItem3 'MenuItem abfragen
Messagebox("STRG+ENTER gedrückt !","Meldung",64)
ENDIF
ENDIF
'------------------------
Return ~DefWindowProc(hWnd&, hMsg&, wParam&, lParam&)
ENDPROC
'------------------------
PROC Main
'------------------------
'Hauptschleife
'------------------------
DECLARE Classname$,WindowTitle$,WindowIcon$
DIM WindowClass#,MyWindowClass
DIM Msg#,MyMsg
Classname$ = "XPrfWndClass"
WindowTitle$ = "Dummy"
WindowIcon$ = "A"
WITH WindowClass#
.style& = 0
.lpfnWndProc& = ProcAddr(WindowCB,4)
.cbClsExtra& = 0
.cbWndExtra& = 0
.hInstance& = %HInstance
.hIcon& = ~LoadIcon(%hInstance,Addr(WindowIcon$))
.hCursor& = ~LoadCursor(0, ~IDC_ARROW)
.hbrBackground& = ~CreateSolidBrush(~GetSysColor(~COLOR_3DFACE))
.lpszMenuName& = Addr(Classname$)
.lpszClassName& = Addr(Classname$)
ENDWITH
IF ~RegisterClass(WindowClass#) = 0
MessageBox("Fehler beim Registrieren der Anwendung !","Fehler...",16)
END
ENDIF
Window& = ~CreateWindowEx( \
0, \
Addr(Classname$), \
Addr(WindowTitle$), \
~ws_OverlappedWindow, \
~cw_UseDefault, \
~cw_UseDefault, \
~cw_UseDefault, \
~cw_UseDefault, \
0, \
0, \
%HInstance, \
0)
CreateControls()
~ShowWindow(Window&, ~SW_SHOWNORMAL)
~UpdateWindow(Window&)
Repeat
Message& = ~GetMessage(Msg#, 0, 0, 0)
~TranslateAccelerator(Window&,AccelTable&,Msg#)
~TranslateMessage(Msg#)
~DispatchMessage(Msg#)
Until Message& <= 0
DISPOSE Msg#
ENDPROC
Main()
__________________
Gruss Andreas ______________________ http://www.ampsoft.eu Profan 3.3 - XProfanX2 Windows 95,98,ME,2000,XP Vista - Windows 7 32 / 64 Bit ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher |
|
|
|
|
|
#14 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 759
|
PureBasic
MessageRequester OpenWindow Gadget WaitWindowEvent XProfan WaitInput Parameters EndProc Zumindest Parameters kommt bei Andreas vor Und ASM muß eindeutig von ASM innerhalb von PureBasic unterschieden werden. Gruß Volkmar |
|
|
|
|
|
#15 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Da benutze ich keine Mnemonics. includelib wird schon recht sicher funktionieren, das ist quasi in jedem Code zu finden.
Das alles betrifft auch nur die automatische Prüfung. Wer auf Nummer sicher gehen will oder wo es Probleme gibt, der nutzt es manuell.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| XProfan-Lehrbuch und XProfan-Manager | Dietmar Horn | Helfer & Tools | 3 | 02.01.2010 13:06 |
| Bin neu in Xprofan | mcmini12 | XProfan-Stammtisch | 1 | 07.03.2009 17:30 |
| PC eindeutig(!) identifizieren | Hagis | Hardware - Problemlösungen | 3 | 28.07.2005 14:52 |
| Ram Speicher identifizieren | 648314 | Hardware - Problemlösungen | 8 | 14.08.2004 02:55 |
| intallierte Soundkarte identifizieren ? | skazi | Windows 95/98/ME/2000/NT | 5 | 22.07.2003 20:04 |