Seite 1 von 1
PB-Declarer
Verfasst: 08.11.2009 14:33
von Josef Sniatecki
Hallo an alle,
Ich habe mal ein kleines Tool zusammengebastelt, mit dem man Deklarationen für Funktionen per Knopfdurck generieren kann.
Ich denke mal, dass einige sich schon sowas programmiert haben, aber trotzdem gibt es noch Leute, die gerne runterladen als schreiben:
Download
Einbindung in die IDE:
Commandline: PB-Declarer.exe
Arguments: "%SELECTION" "%TEMPFILE"
Am besten ein Shortcut zum Aufrufen erstellen (habe für mich Strg+D gewählt).
Benutzung:
Code-Abschnitt selektieren und dann das Tool aufrufen. Sofort danach könnt ihr durch Strg-V den generierten Code einfügen.
Beispiel:
Code: Alles auswählen
Procedure.i Test(a, b)
Procedurereturn Bla() + a + b
EndProcedure
Procedure.i Test2(a, b, c) ;Ein Kommentar
ProcedureReturn Bla() * a * b * c
EndProcedure
Procedure.i Bla()
ProcedureReturn 123
EndProcedure
Ausgabe:
Code: Alles auswählen
Declare.i Test(a, b)
Declare.i Test2(a, b, c)
Declare.i Bla()
Bugs, Kommentare und Verbesserungsvorschläge sind erwünscht.
Viel Spaß damit
Gruß Josef
Re: PB-Declarer
Verfasst: 08.11.2009 16:25
von Rings
Code: Alles auswählen
;**************************************************************
; PB-Declarer
;
; Autor: Josef Sniatecki
; Date: 08.11.2009
; Josef Sniatecki 2009 (c)
;**************************************************************
Global Parameter.s, FileName.s
Global File.i
Global LineStart.i, LineEnd.i
Global Index.i
Global Line.s, *Char.Character
Global Result.s
; Get informations form PureBasic:
Parameter = ProgramParameter()
FileName = ProgramParameter()
; Get selection dimensions:
LineStart = Val(StringField(Parameter, 1, "x")) - 1
LineEnd = Val(StringField(Parameter, 3, "x")) - 1
; Open file:
File = ReadFile(#PB_Any, FileName)
If Not File
MessageRequester("Error", "Can not read file: " + Chr(34) + FileName + Chr(34))
End
EndIf
; Move to the start:
For Index = 1 To LineStart
ReadString(File)
Next
Index = LineStart
While Index <= LineEnd
Line = Trim(ReadString(File))
If Line = ""
Result + Chr(13) + Chr(10)
ElseIf LCase(Left(Line, 9)) = "procedure" And Not LCase(Left(Line, 15)) = "procedurereturn"
*Char = @Line + 9
Repeat
Select *Char\c
Case 0, 13, 10
Break
Case '"'
Repeat
*Char + 1
Until *Char\c = '"'
Case ';'
Break
EndSelect
*Char + 1
ForEver
If Result
Result + Chr(13) + Chr(10)
EndIf
Result + "Declare" + PeekS(@Line + 9, *Char - (@Line + 9))
Repeat
Index + 1
Until Index > LineEnd Or LCase(Left(Trim(ReadString(File)), 12)) = "endprocedure"
EndIf
Index + 1
Wend
SetClipboardText(Result)
End
Re: PB-Declarer
Verfasst: 08.11.2009 16:41
von ts-soft
@Rings
danke, gute Idee
PS: das mit click here hab ich wohl übersehen, nachdem ich adblock plus ausgeschaltet habe,
fand ich dann einen download der mir prompt nen virus installieren wollte.
Ich werde es wohl nie verstehen warum ihr solche *****Upload-Portale nutzt, wo es hier doch
bessere Alternativen gibt
Zum Tool:
Ich selber benötige nur selten Declares, aber dieses Tool ist mir zu umständlich, wenn ich
die Declare selber einfügen muß, kann ich auch den Procedure-Kopf kopieren. Ersparnis ist
mir zu wenig, als das ich dafür das Tool installiere.
Gruß
Thomas
Re: PB-Declarer
Verfasst: 08.11.2009 18:37
von Josef Sniatecki
ts-soft hat geschrieben:
PS: das mit click here hab ich wohl übersehen, nachdem ich adblock plus ausgeschaltet habe,
fand ich dann einen download der mir prompt nen virus installieren wollte.
Ich werde es wohl nie verstehen warum ihr solche *****Upload-Portale nutzt, wo es hier doch
bessere Alternativen gibt

Wollte auch zuerst File-Upload nehmen, aber irgendwie ist er mir ständig mit einem Error abgesprungen.
Zum Kopieren der Headers:
Ich finde das ehrlich gesagt anstrengend, wenn ich mehr als 50 Prozeduren habe, die alle früher verwendet werden. Beim Programmieren bin ich halt ein wenig systematisch und deklariere deswegen jede Funktion, egal ob es nötig ist oder nicht.
Ist halt ne Geschmackssache.
Gruß Josef
PS: Nun habe ich den Link auf File-Upload gewechselt. (denke mal, dass das in Ordnung ist)
Re: PB-Declarer
Verfasst: 08.11.2009 19:08
von TomS
Josef Sniatecki hat geschrieben:Wollte auch zuerst File-Upload nehmen, aber irgendwie ist er mir ständig mit einem Error abgesprungen.

Was?
http://em.q-soft.ch/
Langsam müssten's doch alle kapiert haben.
Re: PB-Declarer
Verfasst: 08.11.2009 19:16
von ts-soft
Josef Sniatecki hat geschrieben:Beim Programmieren bin ich halt ein wenig systematisch
Ich auch, fange unten mit Main() an und füge dadrüber die Prozeduren ein, so ist ein
Declare eigentlich niemals nötig, es sei denn ich verwende Include-Dateien
PS: so ein ähnliches Tool hab ich hier auch schon irgendwo mal veröffentlicht, fügt die
Declares aber automatisch am Anfangs des Codes ein und berücksichtigt Includes.
Mangels eigenen Interesse und Feedback ist es in Vergessenheit geraten.
Gruß
Thomas
// edit
TomS hat geschrieben:Josef Sniatecki hat geschrieben:Wollte auch zuerst File-Upload nehmen, aber irgendwie ist er mir ständig mit einem Error abgesprungen.

Was?
http://em.q-soft.ch/
Langsam müssten's doch alle kapiert haben.
Der scheint aber gesperrt zu sein, lediglich Bilddateien lassen sich hochladen, ansonsten
hätte ich den auch empfohlen.
Re: PB-Declarer
Verfasst: 08.11.2009 19:24
von TomS
Sorry. Hab ich nicht gesehen.
Naja. Mein alltime Favorit ist immer noch ZippyShare.com
Immernoch 1000 mal besser als die meisten anderen (vor allem RapidShare und Hoster, wo man über eine Minute warten muss oO)
Re: PB-Declarer
Verfasst: 09.11.2009 18:55
von Josef Sniatecki
ts-soft hat geschrieben:Josef Sniatecki hat geschrieben:Beim Programmieren bin ich halt ein wenig systematisch
Ich auch, fange unten mit Main() an und füge dadrüber die Prozeduren ein, so ist ein
Declare eigentlich niemals nötig, es sei denn ich verwende Include-Dateien
hätte ich den auch empfohlen.
Und genau das trifft bei mir zu

Mit mehr als 10 Includes kann das irgendwann sehr häuprig werden. Wo du gerade von deinem Tool sprichst, dass auch Includes berücksichtigt: Konnte es auch diese hier beachten?:
Code: Alles auswählen
IncludeFile #PB_Compiler_FilePath + "Blabla.txt"
;Oder auch:
IncludeFile EinMakro(Blabla)
Ich glaube, du weißt was ich damit meine

Habe mal daran gedacht, einen Präprozessor zu programmieren, der die Kleinarbeiten erledigt (z.B. Declares). Nur leider verarbeitet der PB-Compiler gleich alles beim ersten Durchlauf, wodurch ein guter Präprozessor nur mit einem eingebauten PB-Interpreter funktionieren würde.