Automatische Einrücküberarbeitung
Automatische Einrücküberarbeitung
Der Titel klingt etwas komisch, aber ich hatte halt keine andere Idee ^^
Tachchen,
da ich schon wieder gesehen habe das manche (ich auch) nicht richtig Einrücken können/wollen, habe ich mal ein Code geschrieben der aus einer *.pb eine *.pb.pb macht in welcher dann Alles richtig Eingerückt ist.
- Ich habe auch darauf geachtet, dass mache Leute (*mich an anguck*) gerne alles in eine Zeile quetschen. Das Programm erkennt das aber und macht damit kein Einrücken.
- Auch wenn einer ein String hat : "Das ist hier ein If und das ein Repeat", so macht das Programm hier auch nix, weil es String genauso wie Kommentare einfach Ignoriert.
Ich habe es bei meinem 10.000 Zeiler getestet und kein Bug (Fehleinrückung) gefunden.
Es fehlt noch ein paar Schlüsselwörter und ich würde auch gerne Procedurenen wie Start3D oder StartDrawing2D() einrücken lassen, aber das kommt dann später...
Wer einen Bug entdeckt, bitte mal den Codeausschnitt schicken, damit ich weiß was schief lief.
(Link veraltet)
Tachchen,
da ich schon wieder gesehen habe das manche (ich auch) nicht richtig Einrücken können/wollen, habe ich mal ein Code geschrieben der aus einer *.pb eine *.pb.pb macht in welcher dann Alles richtig Eingerückt ist.
- Ich habe auch darauf geachtet, dass mache Leute (*mich an anguck*) gerne alles in eine Zeile quetschen. Das Programm erkennt das aber und macht damit kein Einrücken.
- Auch wenn einer ein String hat : "Das ist hier ein If und das ein Repeat", so macht das Programm hier auch nix, weil es String genauso wie Kommentare einfach Ignoriert.
Ich habe es bei meinem 10.000 Zeiler getestet und kein Bug (Fehleinrückung) gefunden.
Es fehlt noch ein paar Schlüsselwörter und ich würde auch gerne Procedurenen wie Start3D oder StartDrawing2D() einrücken lassen, aber das kommt dann später...
Wer einen Bug entdeckt, bitte mal den Codeausschnitt schicken, damit ich weiß was schief lief.
(Link veraltet)
Zuletzt geändert von STARGÅTE am 27.08.2010 01:10, insgesamt 2-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Bei mir klapps, aber ich benutze schon jaPBe...
Für alle die die Standard IDE benutzen sollte das ein gutes Tool sein.
Aber der Link hat ein "/" zuviel
// erledigt
Für alle die die Standard IDE benutzen sollte das ein gutes Tool sein.
Aber der Link hat ein "/" zuviel

Zuletzt geändert von a14xerus am 05.07.2007 19:12, insgesamt 1-mal geändert.
Ubs habe ich nicht gesehen, naja ^^ doppelt hält besser :-Pts-soft hat geschrieben:http://www.purebasic.fr/german/viewtopi ... 577#118577
Irgendwelche Unterschiede?
Gruß
Thomas
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Naja, ein paar Infos wären ja trotzdem nett.
Unterstützt Plain-Text und UTF-8?, was wird alles eingerückt usw.
Wenn schon doppelt, solltest Du vielleicht versuchen besser zu sein
MultiOS fehlt in jedem fall
Gruß
Thomas
Unterstützt Plain-Text und UTF-8?, was wird alles eingerückt usw.
Wenn schon doppelt, solltest Du vielleicht versuchen besser zu sein

MultiOS fehlt in jedem fall

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Ich find's super bin ja eh Fan einer PBCC (PureBasic Code Convention)
Aber was mir aufgefallen ist, meine PureBasic.prefs sagt TabLength = 2 dein Prog macht aber nur TabLength = 1, außerdem fehlt mir persönlich noch die Formatierung von "Vergleichen"
find ich grässlich imo hat das so auszusehen:
>Unpraktisch.
Nicht hilfreich
Aber was mir aufgefallen ist, meine PureBasic.prefs sagt TabLength = 2 dein Prog macht aber nur TabLength = 1, außerdem fehlt mir persönlich noch die Formatierung von "Vergleichen"
Code: Alles auswählen
If a=0
For i=0 To 10
Code: Alles auswählen
If a = 0
For i = 0 To 10
Nicht hilfreich
Re: Automatische Einrücküberarbeitung
Hallo STARGÅTESTARGÅTE hat geschrieben: Spacer.exe
(das mit dem "Å" hab ich nun auch raus

kannst du bitte den Code posten oder mir schicken, denn mit der ".exe" kann ich auf dem Mac nichts anfangen.
Oder ist dein Code so "API"-verseucht



michel51
Mac OS X Snow Leopard (10.6.8 ) Intel
PureBasic V 5.11(X64), V 5.21(x64)
Zum Lernen ist niemand zu alt.
Mac OS X Snow Leopard (10.6.8 ) Intel
PureBasic V 5.11(X64), V 5.21(x64)
Zum Lernen ist niemand zu alt.
Mein Code ist 3.3 Versäucht ^^, aber da er sehr klein ist bekommst du das hin :
2 mal ist API drin, (bei den DesktopProceduren), aber das kannst du ja mit 4.0 ersetzten
2 mal ist API drin, (bei den DesktopProceduren), aber das kannst du ja mit 4.0 ersetzten

Code: Alles auswählen
Global Only, Space
Procedure Aus(String$)
Restore Aus
Read Str$
While Str$
If FindString(String$, Str$, 1)
Gefunden = 1
If Str$ = " EndSelect " And Only
Only - 1
EndIf
EndIf
Read Str$
Wend
ProcedureReturn Gefunden
EndProcedure
Procedure Ein(String$)
Restore Ein
Read Str$
While Str$
If FindString(String$, Str$, 1)
Gefunden = 1
If Str$ = " Select " And Only
Only + 1
EndIf
EndIf
Read Str$
Wend
ProcedureReturn Gefunden
EndProcedure
Procedure Mitte(String$)
Restore Mitte
Read Str$
While Str$
If FindString(String$, Str$, 1)
Gefunden = 1
EndIf
Read Str$
Wend
ProcedureReturn Gefunden
EndProcedure
Procedure Only(String$)
Restore Only
Read Str$
While Str$
If FindString(String$, Str$, 1)
Gefunden = 1
EndIf
Read Str$
Wend
ProcedureReturn Gefunden
EndProcedure
Procedure DesktopX()
ProcedureReturn GetSystemMetrics_(0)
EndProcedure
Procedure DesktopY()
ProcedureReturn GetSystemMetrics_(1)
EndProcedure
OpenWindow(1, DesktopX()/2-200, DesktopY()/2-50, 400, 60, #PB_Window_SystemMenu, "Automatische Einrücküberarbeitung")
SetGadgetFont(LoadFont(1,"Arial Fett",8))
CreateGadgetList(WindowID(1))
TextGadget(1, 5, 9, 50, 20, "Datei:", #PB_Text_Right)
StringGadget(2, 60, 5, 300, 20, "")
ButtonGadget(3, 365, 5, 30, 20, "...")
ProgressBarGadget(4, 5, 35, 290, 20, 0, 290, #PB_ProgressBar_Smooth)
ButtonGadget(5, 300, 35, 95, 20, "Start")
DisableGadget(5,1)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_EventCloseWindow
End
Case #PB_EventGadget
Select EventGadgetID()
Case 2
FileName$ = GetGadgetText(2)
If FileName$
DisableGadget(5,0)
Else
DisableGadget(5,1)
EndIf
Case 3
FileName$ = OpenFileRequester("", "*.*", "*.pb", 0)
SetGadgetText(2, FileName$)
If FileName$
DisableGadget(5,0)
Else
DisableGadget(5,1)
EndIf
Case 5
DisableGadget(5,1)
DisableGadget(3,1)
DisableGadget(2,1)
If FileName$
FakeEndSelect
Gosub Umschreiben
EndIf
DisableGadget(3,0)
DisableGadget(2,0)
SetGadgetState(4, 0)
EndSelect
EndSelect
ForEver
Umschreiben:
Space = 0
Only = 0
If ReadFile(1, FileName$)
If CreateFile(2, FileName$+".pb")
Repeat
UseFile(1)
If Random(10) :
Loc = Int(Loc()/Lof()*290)
SetGadgetState(4, Loc)
WindowEvent()
EndIf
StringEcht$ = Trim(ReadString())
;Kommentare
Pos = FindString(StringEcht$, ";", 1)
If Pos
String$ = Mid(StringEcht$,1, Pos-1)
Else
String$ = StringEcht$
EndIf
;String
x = 1 : k = 0 :
Repeat
x = FindString(String$, Chr(34), x)
If x
If k
String$ = Mid(String$, 1, xSave-1)+Mid(String$, x+1, Len(String$))
x + 1
Else
xSave = x
x + 1
EndIf
k = 1-k
EndIf
Until x = 0
String$ = " "+String$+" "
;Bearbeitung I
If Aus(String$) :
Space - 1
If Ein(String$) :
Space + 1
EndIf
Else
If Mitte(String$) :
Space - 1
EndIf
EndIf
If Only(String$) And Only :
Only - 1
EndIf
;Einbauen
UseFile(2)
WriteStringN(Space(Space)+Space(Only)+StringEcht$)
;Bearbeitung II
If Ein(String$) :
Space + 1
If Aus(String$) :
Space - 1
EndIf
Else
If Mitte(String$) :
Space + 1
EndIf
EndIf
If Only(String$) :
Only + 1
EndIf
Until Eof(1)
CloseFile(2)
F = MessageRequester("Info", "Datei wurde erfolgreich bearbeitet."+Chr(10)+"Datei jetzt öffnen ?", #PB_MessageRequester_YesNo)
If F = 6
RunProgram(FileName$+".pb", "", 0)
EndIf
EndIf
CloseFile(1)
Else
MessageRequester("Fehler", "Datei konnte nicht geöffnet werden!", 0)
EndIf
Return
DataSection
Aus:
Data.s " EndIf ", " CompilerEndIf ", " Wend ", " Until ", " ForEver ", " Next ", " EndSelect ", " EndStructure ", " EndProcedure ", ""
Ein:
Data.s " If ", " CompilerIf ", " While ", " Repeat ", " For ", " Select ", " Structure ", " Procedure ", " Procedure.", ""
Mitte:
Data.s " Else ", " ElseIf ", ""
Only:
Data.s " Case ", " Default ", ""
EndDataSection
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Der Code den ts-soft verlinkt hat ist bereits auf Linux lauffähig und liegt auch als PB4.x-Source vor, vielleicht solltest du den eher Mac-Fit machen.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}