Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Mod phpMultiSyn-PunBB-1.1.7
Un post en partie publique (pour accès invités) concernant la coloration syntaxique des scripts utilisée sur pbadonf. (cf les news du forum)
Il s'agit de l'implémentation du mod Multi Syntax Highlighter For PunBB.
Pour ceux qui préfèrent une explication en vidéo © xlat
UTILISATION
La syntaxe BBcode est :
[ code=LANGAGE]
(sans espace)(sans espace)
script
[ /code]
avec LANGAGE
dans :
apache
applescript
cpp
delphi
firebird
ini
mssql
pascal
pb
php
sql
vb
vbnet
vbscript
VERSIONS
V1.0 (Mod1.1.?) : 22/03/07 : mod pb supporte les mot clés, chaines, commentaires, force les minuscules, bug sql
V1.1 (Mod1.1.2) : 25/04/07 : mod pb supporte les mot clés, chaines, commentaires, bug sql
V1.3 (Mod1.1.2) : 30/04/07 : mod pb supporte les mot clés, chaines, commentaires
EXTENSIONS pb
* datatypes (distincts de mot clés)
* énumérés Valeur!
* CamelCase
Hors ligne
EXEMPLE PB
$PBExportHeader$w__tablesql_dyn.srw $PBExportComments$[RESP] Fenetre de recherche de tables forward global type w__tablesql_dyn from window end type type cb_sql from commandbutton within w__tablesql_dyn end type type st_liste from statictext within w__tablesql_dyn end type type gb_liste from groupbox within w__tablesql_dyn end type end forward public subroutine wf_modify_dwresult (datawindow adw_liste, boolean ab_listing); ////////////////////////////////////////////////////////////////////////////// // // Nom : wf_Modify_DwResult (EXTERNE) // But : Modifier les attributs visuels de la DW générée // script : // Argument : adw_liste, datawindow recevant le résultat // // Return : // Comment : // section : // History : // //////////////////////////////////////////////////////////////////////////////// string ls_TextList[], ls_ColList[] Integer li_nbrObj, li_i1 Long ll_maxheight = 0 Boolean lb_maxheight = False // Modifier la couleur de fond adw_liste.Object.DataWindow.Color='31778020' // Modifier le style et la couleur des textes li_nbrObj = wf_dw_nbobject(adw_liste,true,ls_TextList) FOR li_i1 = 1 TO li_nbrObj IF li_i1 = 1 THEN ll_maxheight = Long(adw_liste.Describe(ls_TextList[li_i1] +".Height")) IF ll_maxheight <> Long(adw_liste.Describe(ls_TextList[li_i1] +".Height")) THEN lb_maxheight = TRUE IF ll_maxheight < Long(adw_liste.Describe(ls_TextList[li_i1] +".Height")) THEN ll_maxheight = Long(adw_liste.Describe(ls_TextList[li_i1] +".Height")) END IF adw_liste.Modify(ls_TextList[li_i1] + ".Background.Mode='0'") adw_liste.Modify(ls_TextList[li_i1] + ".Background.Color='67108864'") adw_liste.Modify(ls_TextList[li_i1] + ".Border='6'") NEXT // Mettre tous les objets textes à la hauteur maxi IF lb_maxheight = TRUE THEN FOR li_i1 = 1 TO li_nbrObj adw_liste.Modify(ls_TextList[li_i1] +".Height='" + string(ll_maxheight) + "'") NEXT END IF // Modifier le style et la couleur des colonnes li_nbrObj = wf_dw_nbobject(adw_liste,false,ls_ColList) FOR li_i1 = 1 TO li_nbrObj IF ab_listing = True THEN adw_liste.Modify(ls_ColList[li_i1] + ".Background.Mode='1'") adw_liste.Modify("DataWindow.Detail.Color= '" + string(12582911) + & "~tif( mod(getRow(),2 ) = 0 ," + string(12582911) + ", rgb(255, 211, 168))'") ELSE adw_liste.Modify(ls_ColList[li_i1] + ".Background.Mode='0'") END IF adw_liste.Modify(ls_ColList[li_i1] + ".Background.Color='16777215'") adw_liste.Modify(ls_ColList[li_i1] + ".Border='0'") NEXT adw_liste.Modify("DataWindow.ReadOnly=Yes") end subroutine
Hors ligne
EXEMPLE FICHIER .INI
[PB] CompilerWarnings=1 DashesInIdentifiers=1 DatabaseWarnings=1 Maximized=1 PromptOnExit=0 StripComments=0 WebLink1=&Sybase Web Site,http://www.sybase.com WebLink2=&Electronic Case Management,http://login.sybase.com/login?referer=http://casexpress.sybase.com/cx/cx.stm WebLink3=Sybase &Online Books Site,http://www.sybase.com/support/manuals/ [SQL Painter] Hidecomments=0 Tabitem=1
Hors ligne
EXEMPLE CODE SQL (mode sql ou mssql)
-- exemple SQL SELECT NOM, PRENOM FROM EMPLOYE WHERE NOM LIKE 'pick%' AND PRENOM = 'ouic' OR SALAIRE > 10000 UNION SELECT NOM, PRENOM FROM EMPLOYE WHERE SALAIRE > 100000 AND MATRICULE NOT IN ( '007', '117' ) GROUP BY 1 ORDER BY 1,2;
-- exemple MSSQL DECLARE @titre VARCHAR(50), @genre VARCHAR(50), @rupture_genre VARCHAR(50), @rupture_auteur VARCHAR(50), @auteur VARCHAR(50) DECLARE @i_genre INT SET @i_genre = 1 SET @rupture_genre = '' SET @rupture_auteur = '' DECLARE curseur_ouvrages CURSOR FOR SELECT ouvrage_titre, genre_nom, auteur_nom FROM t_ouvrages O LEFT OUTER JOIN t_genres ON genre_id = ouvrage_genre LEFT OUTER JOIN t_ouvrages_auteurs TOA ON TOA.ouvrage_id = O.ouvrage_id LEFT OUTER JOIN t_auteurs TA ON TA.auteur_id = TOA.auteur_id ORDER BY ouvrage_genre OPEN curseur_ouvrages FETCH curseur_ouvrages INTO @titre , @genre, @auteur WHILE @@FETCH_STATUS = 0 BEGIN IF @genre != @rupture_genre BEGIN PRINT '' PRINT CONVERT(CHAR(2),@i_genre) + '. ' + @genre SET @i_genre = @i_genre + 1 SET @rupture_auteur = '' END IF @auteur != @rupture_auteur BEGIN PRINT '' PRINT @auteur PRINT '------------' END PRINT @titre; SET @rupture_genre = @genre SET @rupture_auteur = @auteur FETCH curseur_ouvrages INTO @titre , @genre, @auteur END CLOSE curseur_ouvrages DEALLOCATE curseur_ouvrages
Hors ligne
EXEMPLE VB
Public Function GetSAPData() As Integer Dim ctlLogon As Object Dim funcControl As Object Dim ctlTableFactory As Object Dim objConnection As Object Dim booReturn As Boolean Dim RFC_READ_TABLE As Object Dim strExport1 As Object Dim strExport2 As Object Dim tblOptions As Object Dim tblData As Object Dim tblFields As Object Dim intRow As Integer Dim iStr_Split As Variant Dim iStr_SQL As String Dim iRec As Recordset Dim iBln_Prem As Boolean Dim iBln_Data As Boolean ecritLog "Connection à SAP." Set ctlLogon = CreateObject("SAP.LogonControl.1") Set funcControl = CreateObject("SAP.Functions") Set ctlTableFactory = CreateObject("SAP.TableFactory.1") Set objConnection = ctlLogon.NewConnection objConnection.ApplicationServer = fngGetParamString("SAPLogin", "ApplicationServer") objConnection.System = fngGetParamString("SAPLogin", "System") '"DE3" objConnection.SystemNumber = fngGetParamString("SAPLogin", "SystemNumber") '"0" objConnection.Client = fngGetParamString("SAPLogin", "Client") '"100" objConnection.Language = fngGetParamString("SAPLogin", "Language") '"FR" objConnection.User = fngGetParamString("SAPLogin", "User") ' Le User SAP objConnection.Password = fngGetParamMdP("SAPLogin", "Password") 'Le pass SAP booReturn = objConnection.Logon(0, True) If booReturn <> True Then ecritLog "Impossible de se logger à SAP." GoTo Erreur Else ecritLog "Connection à SAP OK." funcControl.Connection = objConnection Set RFC_READ_TABLE = funcControl.Add("RFC_READ_TABLE") Set tblOptions = RFC_READ_TABLE.Tables("OPTIONS") Set tblData = RFC_READ_TABLE.Tables("DATA") Set strExport1 = RFC_READ_TABLE.Exports("QUERY_TABLE") Set strExport2 = RFC_READ_TABLE.Exports("DELIMITER") strExport1.Value = "VBKD" strExport2.Value = "|" iStr_SQL = "SELECT DocVente, DocVentePoste " & _ "FROM Commandes " & _ "WHERE not(InfoEnvoyee) " Set iRec = gObj_DataBase.OpenRecordset(iStr_SQL) iBln_Prem = True intRow = 2 Set tblFields = RFC_READ_TABLE.Tables("FIELDS") tblFields.AppendRow tblFields(1, "FIELDNAME") = "VBELN" tblFields.AppendRow tblFields(2, "FIELDNAME") = "POSNR" tblFields.AppendRow tblFields(3, "FIELDNAME") = "BSTKD" tblFields.AppendRow tblFields(4, "FIELDNAME") = "BSTKD_E" If Not iRec.EOF Then tblOptions.AppendRow tblOptions.AppendRow End If ecritLog "Récupération des données (Numéros de commande) dans SAP." While Not iRec.EOF tblOptions(1, "TEXT") = "VBELN EQ '" & iRec.Fields(0).Value & "'" tblOptions(2, "TEXT") = " AND POSNR EQ '" & Left("000000", 6 - Len(iRec.Fields(1).Value)) & iRec.Fields(1).Value & "'" If RFC_READ_TABLE.Call = True Then Else ecritLog "Erreur lors de la récupération des données : " & RFC_READ_TABLE.exception objConnection.Logoff GoTo Erreur End If iRec.MoveNext Wend If tblData.RowCount > 0 Then For intRow = 1 To tblData.RowCount iStr_Split = Split(tblData(intRow, "WA"), "|") iStr_SQL = "Update COMMANDES " & _ "set BSTKD = '" & Left(Trim(iStr_Split(2)), Len(Trim(iStr_Split(2))) - 3) & "', " & _ "BSTKD_E = '" & Trim(iStr_Split(3)) & "' " & _ "WHERE DocVente = '" & iStr_Split(0) & "' " & _ "AND DocVentePoste = " & iStr_Split(1) gObj_DataBase.Execute iStr_SQL, dbFailOnError ecritLog "Récupération des données OK pour la commande " & iStr_Split(0) & " - " & iStr_Split(1) Next Else ecritLog "Pas de données récupérées." ' pour la commande " ' & iStr_Split(0) & " - " & iStr_Split(1) End If iRec.Close objConnection.Logoff Set objConnection = Nothing Set ctlLogon = Nothing Set funcControl = Nothing Set ctlTableFactory = Nothing Set RFC_READ_TABLE = Nothing Set strExport1 = Nothing Set strExport2 = Nothing Set tblOptions = Nothing Set tblData = Nothing Set tblFields = Nothing
Hors ligne
voilà c'est réglé pour les codes forcés en minuscules
Hors ligne
eRaSorZ a écrit:
voilà c'est réglé pour les codes forcés en minuscules
Et 50 pépites pour eRaSorZ qui traînait encore sur le site à 1H30 du mat' pour nous faire ses smilies, ses mod et... sa belle 2ème place au classement
Hors ligne
eRaSorZ a écrit:
voilà c'est réglé pour les codes forcés en minuscules
Il ne reste plus que le bug sql (le rouge qui reste)
foon a écrit:
Et 50 pépites pour eRaSorZ
Très bonne idée ! Et 100 de plus.
Hors ligne
shahin a écrit:
Il ne reste plus que le bug sql (le rouge qui reste)
et non, , il reste encore:
* datatypes (distincts de mot clés)
* énumérés Valeur!
je suis actuellement (non-activement ) sur le 1er point...
Hors ligne
bug sql résolu
Hors ligne
Le bug eradicator junior gagne toujours
delete db_bug where user_id = 'eRaSorZ'; select 'Cool ça marche' from dual;
Hors ligne
foon a écrit:
Code: mssql
delete db_bug where user_id = 'eRaSorZ'; select 'Cool ça marche' from dual;
d'ailleurs ton code est faux ...
Hors ligne
Yeap! la seconde ligne est un affreux mélange de Transact SQL et de PL/SQL
Hors ligne
Hors ligne