Aktuelle Zeit: 14.11.2018 04:09

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Assembler Error
BeitragVerfasst: 27.12.2017 13:53 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Ach ja!
Der schlimme Missbrauch von Makros! Diese kompakte und versteckte Redundanz des Codes.
(STRG+F)

Also das hier läuft bei mir:
Code:
;Bitte Debugger ausschalten (DisableDebugger bringt nichts!)

start = ElapsedMilliseconds()

zeichen.s{28} = "Hallo sichtbares Universum "

;Macro M1 : i+1 : str.s = "Hallo sichtbares Universum "+Str(i) : EndMacro ;Das funktioniert nicht!

Macro M1 : i+1 : str.s = zeichen+Str(i) : EndMacro ;Das funktioniert noch viel höher !!!

Macro M2 : M1 : M1 : M1 : M1 : M1 : M1 : M1 : M1 : M1 : M1 : EndMacro ;10x
Macro M3 : M2 : M2 : M2 : M2 : M2 : M2 : M2 : M2 : M2 : M2 : EndMacro ;100x
Macro M4 : M3 : M3 : M3 : M3 : M3 : M3 : M3 : M3 : M3 : M3 : EndMacro ;1000x
Macro M5 : M4 : M4 : M4 : M4 : M4 : M4 : M4 : M4 : M4 : M4 : EndMacro ;10000x
;Macro M6 : M5 : M5 : M5 : M5 : M5 : M5 : M4 : M4 : M4 : M4 : EndMacro ;64000x !!! läuft bei mir           
;Macro M6 : M5 : M5 : M5 : M5 : M5 : M5 : M4 : M4 : M4 : M4 : M4 : EndMacro ;65000x !!! führt zum Absturz
Macro M6 : M5 : M5 : M5 : M5 : M5 : M5 : M5 : M5 : M5 : M4 : M4 : M4 : M4 : M4 : M4 : M4 : M4 : EndMacro ;jetzt sind 98000 drin :)

M6
ende = ElapsedMilliseconds() - start
MessageRequester("Ergebnis","Anzahl: "+Str(i)+" / Zeit: "+StrF(ende/1000,2)+" Sekunden")

;Das geht auf jedenfall ;):
i = 0
start = ElapsedMilliseconds()

For z = 0 To 9
  For y = 0 To 9
    For x = 0 To 9
      For w = 0 To 9
        For v = 0 To 6
          i+1
          str.s="Hallo sichtbares Universum."+Str(i)
        Next v
      Next w
    Next x
  Next y
Next z

ende = ElapsedMilliseconds() - start
MessageRequester("Ergebnis","Anzahl: "+Str(i)+" / Zeit: "+StrF(ende/1000,2)+" Sekunden")


->Und jetzt sind auch noch über 100.000x drin :mrgreen:
Code:
;Bitte Debugger ausschalten (DisableDebugger bringt nichts!)

start = ElapsedMilliseconds()

s.s = ""
z.s = "Hallo sichtbares Universum "

Macro Q:Str(i):EndMacro
Macro M1:i+1:s=z+Q:EndMacro ;Das funktioniert noch viel höher !!!
Macro M2:M1:M1:M1:M1:M1:M1:M1:M1:M1:M1:EndMacro ;10x
Macro M3:M2:M2:M2:M2:M2:M2:M2:M2:M2:M2:EndMacro ;100x
Macro M4:M3:M3:M3:M3:M3:M3:M3:M3:M3:M3:EndMacro ;1000x
Macro M5:M4:M4:M4:M4:M4:M4:M4:M4:M4:M4:EndMacro ;10000x
Macro M6:M5:M5:M5:M5:M5:M5:M5:M5:M5:M5:EndMacro ;100000x
Macro M7:M6:M5:M5:M5:M5:M4:M4:M4:M4:M4:M4:M4:M4:M3:M3:M3:M3:M3:M3:M3:M3:M2:M2:M2:M2:M2:M2:M2:M1:M1:M1:M1:EndMacro ;jetzt sind auch noch 148874x drin :)

M7
ende = ElapsedMilliseconds() - start
MessageRequester("Ergebnis","Anzahl: "+Str(i)+" / Zeit: "+StrF(ende/1000,2)+" Sekunden")


-> Der Debugger darf auch nicht laufen !!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Assembler Error
BeitragVerfasst: 30.12.2017 17:12 
Offline

Registriert: 30.07.2008 16:02
Wohnort: Oberösterreich
Hi Leute , war mal wieder ne woche im Job und das Programm ist weiter gewachsen !
Zu erst mal an Sylvia, der Code an dem du das endif vermisst war nur der Kopf (Ausschnitt) vom Code - deshalb- ich wollte mich hier im Forum Kurz halten.

Und Danke an GPI ich werde mich da mal einarbeiten, ist neuland für mich !

Hi #NULL nochwas zum Speicher, das ist ja das Komische dabei, ich habe die Leistungsanzeige am 2. Bildschirm mit RAM Anzeigen
Dieser läuft so zwischen 15 und 19 %, beim Compilieren hebt sich die Prozessleistung nur um ein lasches %.
Also daran meine ich kann das nicht liegen, Purebasic Comp. dafür aber auch gute und schnelle Prog's. Wenns denn fehlerfrei durchläuft.

Ich habe das ganze mit den Macro's gestrafft wobei natürlich auch der Code eleganter und schneller wird, es bleibt zwar für mich immer noch die Frage was da am Compiler passiert, weil keine Fehlerausgabe. Daraus lernt man aber den Code nicht zu sehr zu "Verschachteln"
Nun habe ich das Selbe Problem mit if - endif und while - wend schleifen, gleicher Compiler "Fehler" und Anzeige wie bei den zu vielen Macros.
Also was tun, wieder den Code Straffen... aber irgendwann ist schluß mit straffen und man braucht Macro's if then else while wend und co um zu Coden.
Wenn nach dem Straffen der "Fehler wieder auftaucht und ich mich frage was ist zuviel dann kann ich sicherlich ohne Debugger Compilieren.... Das hilft aber auch nur für eine gwisse
Anzahl an weiteren schleifen ! Irgendwann ist schluss und der Compiler bleibt bei seiner "Aussage"

Es geht auch nicht um einen einfachen Macro mit ein paar zeilen, das kann man problemlos 100000 mal aufrufen.
Bei mir taucht der Fehler auf beim Aufruf des Macro's (1240 Zeilen) aus einem Macro mit bis zu 1500 Zeilen ??

Ist hier Irgendwo die Grenze von Purebasic erreicht ?? Denn außer dem was ich bis jetzt herausgefunden habe hilft mir nicht wirklich, das Programm wächst, bzw. ist gewachsen bis ich nun
an diesem Punkt bin und die Frage stelle ist es wirklich eine grenze der schleifen Macro's befehle... oder ist im Compiler eine Einstellung falsch, habe ich eine Compilerdirective übersehen
die gesetztz werden muss.. ?

Gruß Stephan

_________________
Wenn Sie nichts zu Tun haben, tun Sie es bitte nicht hier.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Assembler Error
BeitragVerfasst: 31.12.2017 00:32 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo Stephan-X,

warum überhaupt Makros ?

Ich würde Makros nicht als Allheilmittel ansehen und fast immer vermeiden. (Auch wenn einige anderer Meinung sind.)
Auch die Ausführgeschwindigkeit ist dafür kein Argument.

Wenn man ordentlich programmiert und gute Funktionen schreibt und z.B. Variablen komprimiert (z.B. durch Bitshift (keine Empfehlung bei JS(Spiderbasic)) und keine verschachtelte For-Schleifen (wie in meinem Beispiel = wenn die Grenze bekannt ist reicht auch eine For-Schleife), etc. und noch viel viel mehr.)

Warum Makros ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Assembler Error
BeitragVerfasst: 01.01.2018 16:52 
Offline

Registriert: 30.07.2008 16:02
Wohnort: Oberösterreich
Hi ccode_new,
tja das mit den Macros ist eine gute Sache um einen Code der ca. 500 Zeilen hat der Bestimmte Daten aus div. Dateien sammelt und zur verfügung stellt, dieses
aber an sehr vielen stellen im Code. Natürlich könnte man sich den Macro sparen und den Code soundsovielmal in den Code eincopieren... ! Da der Code dieses Macros sich aber über eine gewisse Zeit noch ändert ist das für mich aber immer eine Sache der Lesbarkeit und der Bearbeitung, so habe ich nur ein paar Zeilen zu verändern.
OK hier mal ein Ausschnitt aus einem Macro ohne weitere Erklärung der Programmzugehörigkeit, das würde hier den Rahmen Sprengen.
Aber wichtig wäre mir wie du dieses mit anderen Befehlen oder For Schleifen auflösen würdest.

Code:
; ---------------------------------------------------------------------------------------------------------------------------
    ;-Mobilist / Hauptfahrer Verplant
    ; ---------------------------------------------------------------------------------------------------------------------------
    re.l = 0
    While re <= MobDS
      ;1. Schicht
      If mob(re)\mob_kennr = teatnr And mob(re)\mob_schcht = sctbs1 And  mob(re)\mob_fahr = "E"
        name.s = Left(mob(re)\mob_vnam,1)+". "+ mob(re)\mob_nnam ;: M_E_kann = mob(re)\mob_koenn
        ;Zählen der Tage
           tage.l = 1 : tagzz.l = 0
           While tage <= mob(re)\mob_zahl
             mobtag.l = mob(re)\mob_vonparse + ((3600 * 24) * tagzz)
             mobildatum.s = FormatDate("%dd.%mm.%yyyy",  mobtag )
             If mobildatum = datumanz
               plan.s = " : "+mob(re)\mob_platz+"  "+mob(re)\mob_schcht+"  "+mob(re)\mob_kennr+"   "+mob(re)\mob_teat
               SetGadgetItemText(listnam,tare,name,3)
               SetGadgetItemColor(listnam,tare,#PB_Gadget_FrontColor,$494848,3)
            SetGadgetItemColor(listnam,tare,#PB_Gadget_BackColor,$6CC1F8,3)
            SetGadgetItemColor(listnam,tare,#PB_Gadget_BackColor,$8E8E8E,4)
          EndIf
          tagzz = tagzz + 1 
             tage = tage + 1
           Wend
         EndIf
         If mob(re)\mob_kennr = teatnr And mob(re)\mob_schcht = sctbs2  And mob(re)\mob_fahr = "E"
        name.s = Left(mob(re)\mob_vnam,1)+". "+ mob(re)\mob_nnam ;: M_E_kann = mob(re)\mob_koenn
        ;Zählen der Tage
           tage.l = 1 : tagzz.l = 0
           While tage <= mob(re)\mob_zahl
             mobtag.l = mob(re)\mob_vonparse + ((3600 * 24) * tagzz)
             mobildatum.s = FormatDate("%dd.%mm.%yyyy",  mobtag )
             If mobildatum = datumanz
               plan = " : "+mob(re)\mob_platz+"  "+mob(re)\mob_schcht+"  "+mob(re)\mob_kennr+"   "+mob(re)\mob_teat
               SetGadgetItemText(listnam,tare,name,7)
               SetGadgetItemColor(listnam,tare,#PB_Gadget_FrontColor,$494848,7)
            SetGadgetItemColor(listnam,tare,#PB_Gadget_BackColor,$6CC1F8,7)
            SetGadgetItemColor(listnam,tare,#PB_Gadget_BackColor,$8E8E8E,8)
          EndIf
          tagzz = tagzz + 1 
             tage = tage + 1
           Wend
         EndIf
         If mob(re)\mob_kennr = teatnr And mob(re)\mob_schcht = sctbs3  And mob(re)\mob_fahr = "E"
        name.s = Left(mob(re)\mob_vnam,1)+". "+ mob(re)\mob_nnam ;: M_E_kann = mob(re)\mob_koenn
        ;Zählen der Tage
           tage.l = 1 : tagzz.l = 0
           While tage <= mob(re)\mob_zahl
             mobtag.l = mob(re)\mob_vonparse + ((3600 * 24) * tagzz)
             mobildatum.s = FormatDate("%dd.%mm.%yyyy",  mobtag )
             If mobildatum = datumanz
               plan = " : "+mob(re)\mob_platz+"  "+mob(re)\mob_schcht+"  "+mob(re)\mob_kennr+"   "+mob(re)\mob_teat
               SetGadgetItemText(listnam,tare,name,11)
               SetGadgetItemColor(listnam,tare,#PB_Gadget_FrontColor,$494848,11)
            SetGadgetItemColor(listnam,tare,#PB_Gadget_BackColor,$6CC1F8,11)
            SetGadgetItemColor(listnam,tare,#PB_Gadget_BackColor,$8E8E8E,12)
             EndIf
          tagzz = tagzz + 1 
             tage = tage + 1
           Wend
         EndIf
         If mob(re)\mob_kennr = teatnr And mob(re)\mob_schcht = sctbs4  And mob(re)\mob_fahr = "E"
        name.s = Left(mob(re)\mob_vnam,1)+". "+ mob(re)\mob_nnam ;: M_E_kann = mob(re)\mob_koenn
        ;Zählen der Tage
           tage.l = 1 : tagzz.l = 0
           While tage <= mob(re)\mob_zahl
             mobtag.l = mob(re)\mob_vonparse + ((3600 * 24) * tagzz)
             mobildatum.s = FormatDate("%dd.%mm.%yyyy",  mobtag )
             If mobildatum = datumanz
                plan = " : "+mob(re)\mob_platz+"  "+mob(re)\mob_schcht+"  "+mob(re)\mob_kennr+"   "+mob(re)\mob_teat
               SetGadgetItemText(listnam,tare,name,15)
               SetGadgetItemColor(listnam,tare,#PB_Gadget_FrontColor,$494848,15)
            SetGadgetItemColor(listnam,tare,#PB_Gadget_BackColor,$6CC1F8,15)
            SetGadgetItemColor(listnam,tare,#PB_Gadget_BackColor,$8E8E8E,16)
             EndIf
          tagzz = tagzz + 1 
             tage = tage + 1
           Wend
         EndIf
       re = re + 1
    Wend


Hier werden Mitarbeiter mit Bestimmten Arbeitskennungen herausgesucht um weiter mit Urlaubs und weiteren Dateien zu Vergleichen,
sowie die Darstellung in eine dazugehörigen Tabelle.
Ist mit Macros einfacher als Funktionen oder Procedu'n mit ellenlangen Übergabevar's zu erstellen.
Es erscheint mir so als ob der Compiler die Schleifenebenen von Aufruf zu Aufruf immer weiter verschachtelt als beim Aufruf wieder bei 0 zu beginnen !
Aber so isses im Moment, freue mich auf deine Anregung, event. hilft's mir. Vielleicht bin ich ja auch schon Codeblind :bounce:

Stephan

_________________
Wenn Sie nichts zu Tun haben, tun Sie es bitte nicht hier.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Assembler Error
BeitragVerfasst: 01.01.2018 17:27 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallöchen Stephan-X (im neuen Jahr):

1.
Stephan-X hat geschrieben:
Aber wichtig wäre mir wie du dieses mit anderen Befehlen oder For Schleifen auflösen würdest.


Gar nicht! Das mit den For-Schleifen war ja nur ein anderes Beispiel und hat mit deinem Code rein gar nichts zu tun.

2.
Stephan-X hat geschrieben:
Ist mit Macros einfacher als Funktionen oder Procedu'n mit ellenlangen Übergabevar's zu erstellen.


Ich würde halt statt eines Makros eine oder mehrere Funktionen schreiben (Finde ich sicherer/Kann man auch leichter debuggen).
Wie du das mit den "ellenlangen Übergabevar'" handhaben tust ist auch noch eine andere Sache.
Da bei einem/deinem Makro die Variablen ja quasi auch Global sind wäre das eine Stapel füllende Lösung.
Du könntest z.B. Variablen auch sharen (mit Shared oder ByRef (Pointer)-Übergabe).

Aber da es bei dir mit einem Makro ja funktioniert und du damit auch nicht mehr an die Grenzen stößt kannst du es ja beibehalten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Assembler Error
BeitragVerfasst: 01.01.2018 17:35 
Offline
Benutzeravatar

Registriert: 01.04.2007 20:18
;) Um so etwas umzustrukturieren, sind leider ein paar mehr Infos nötig.

Z.B. Globale Variablen... oder solche die es werden müssten, Strukturen... usw

Du nutzt z.B. ein Array mob() mit einer Struktur... da kann man z.b. ansetzen.

Also hier mal ein kleines Umbaubeispiel, das ebenfalls noch Umbaupotential besitzt,
allerdings setzt alles Kenntnis der Datenstrukturen voraus.

(Anhand der wenigen Daten die du mitgeteilt hast, hab ich mir eigenes "gestrickt")

Code:
Structure s_mob
  mob_kennr.s
  mob_schcht.s
  mob_fahr.s
  mob_zahl.i
  mob_vnam.s
  mob_nnam.s
  mob_koenn.i
  mob_platz.s
  mob_teat.s
  mob_vonparse.i
EndStructure

Dim mob.s_mob(100)

Define teatnr.s, sctbs1.s, sctbs2.s, sctbs3.s, sctbs4.s, re.l, MobDS
Define listnam, tare, DatumAnz.s

Procedure CountDays(Gadget, Item, DatumAnz.s, ColumnStart, *mob.s_mob)
 
  Protected tage = 1, tagzz = 0, mobtag.l, mobildatum.s, plan.s
 
  If *mob
   
    Name.s = Left(*mob\mob_vnam, 1) + ". " + *mob\mob_nnam
   
    While tage <= *mob\mob_zahl
      mobtag = *mob\mob_vonparse + ((3600 * 24) * tagzz)
      mobildatum = FormatDate("%dd.%mm.%yyyy",  mobtag )
      If mobildatum = datumanz
        plan = " : " + *mob\mob_platz + "  " + *mob\mob_schcht + "  " + *mob\mob_kennr + "   " + *mob\mob_teat
        SetGadgetItemText(Gadget,Item, Name, ColumnStart)
        SetGadgetItemColor(Gadget, Item, #PB_Gadget_FrontColor, $494848, ColumnStart)
        SetGadgetItemColor(Gadget, Item, #PB_Gadget_BackColor, $6CC1F8, ColumnStart)
        SetGadgetItemColor(Gadget, Item, #PB_Gadget_BackColor, $8E8E8E, ColumnStart + 1)
      EndIf
      tagzz = tagzz + 1
      tage = tage + 1
    Wend
   
  EndIf

EndProcedure

; ---------------------------------------------------------------------------------------------------------------------------
;-Mobilist / Hauptfahrer Verplant
; ---------------------------------------------------------------------------------------------------------------------------
re = 0
While re <= MobDS
  ;1. Schicht
  If mob(re)\mob_kennr = teatnr And mob(re)\mob_schcht = sctbs1 And  mob(re)\mob_fahr = "E"
    CountDays(listnam, tare, DatumAnz, 3, @mob(re))
  EndIf
 
  If mob(re)\mob_kennr = teatnr And mob(re)\mob_schcht = sctbs2  And mob(re)\mob_fahr = "E"
    CountDays(listnam, tare, DatumAnz, 7, @mob(re))
  EndIf
  If mob(re)\mob_kennr = teatnr And mob(re)\mob_schcht = sctbs3  And mob(re)\mob_fahr = "E"
    CountDays(listnam, tare, DatumAnz, 11, @mob(re))
  EndIf
  If mob(re)\mob_kennr = teatnr And mob(re)\mob_schcht = sctbs4  And mob(re)\mob_fahr = "E"
    CountDays(listnam, tare, DatumAnz, 15, @mob(re))
  EndIf
  re = re + 1
Wend


Der komplette Umstieg ist allerdings mit einer beinahe Neuprogrammierung zu vergleichen (also Aufwandmäßig gesehen)
Man sollte sich am Anfang Gedanken machen... Was für Daten braucht man... welche Daten braucht man wo... usw....

_________________
PureBasic 5.46 LTS / 5.62 (Windows x86/x64) | Windows10 Pro x64 | Z370 Extreme4 | i7 8770k | 32GB RAM | iChill GeForce GTX 980 X4 Ultra | HAF XF Evo​​


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Assembler Error
BeitragVerfasst: 01.01.2018 17:44 
Offline
verheiratet<br>1. PureGolf-Gewinner
Benutzeravatar

Registriert: 29.08.2004 09:42
Wohnort: Old Europe
@Stefan-X:
Bei deinem Macro in gleiche Macro in gleiche Macro-Aufgerufe schiesst mir gleich eine andere Vorgehensweise in den Kopf: Schon mal über eine rekursive Procedure nachgedacht?

_________________
Basic Pur = PureBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Assembler Error
BeitragVerfasst: 01.01.2018 18:59 
Offline

Registriert: 30.07.2008 16:02
Wohnort: Oberösterreich
Hi Bisonte, danke für deine mühen aber das ist nur ein kleiner teil von den 850 Zeilen des Makros... und das sind vom Hauptprogramm gesteuerte Dynamische Arrays die hab ich schon zerlegt ! :D
Es geht wirklich nur noch darum wie ich mit dem Code Aufrufe verringere ohne den Ablauf zu verändern. Dann bleibt noch den Code überall dort einzufügen an dem der Macro Aufgerufen wird und den Macro löschen, dann hab ich wieder etwas luft ! "Aber wehe der Änderung " Ich werde den Tip von GPI mal Ausprobieren mit Includefile ! 8) An Sylvia : Die Idee ist normalerweise schon Berechtigt , ist aber hier nicht machbar. Da bekam ich schon früher Div. Fehlermeldungen. Deshalb habe ich lange Wochen alles umgestellt ! :(
Na dann, nach über 7 Monaten Entwicklung werd ich die nächsten wochen mal Brüten... vielleicht kommt noch die eine oder andere Idee, wobei das ganze aber schon so gewachsen ist, wird schwierig mit größeren umcoden. :roll:

Noch an ccode_new, das mit den funktionen ist gut .... aaaaaber bei zu vielen Funktionen kommt das selbe "problem"
langsam glaube ich dass ich mal 'ne andere Pureversion lade, oder das mal am anderen Rechner probier.
Persönlich habe ich's nicht so mit Funktionen.. :) aber wie gesagt meine eigene Sache !

Danke an Euch und für Eure Unterstützung

_________________
Wenn Sie nichts zu Tun haben, tun Sie es bitte nicht hier.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Assembler Error
BeitragVerfasst: 04.01.2018 14:38 
Offline
Benutzeravatar

Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten
Code:
; MiniMakroPreProzessor: Löse PB Macro auf. 
; offen überflüssige Ersetzung in Kommentaren, Strings
;   Makroparameter
;   : in Kommentaren, Strings (z.B. Dateinamen) , Zeichenkonstanten
EnableExplicit
CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Linux   : Define NaechsteZeile$=#LF$
  CompilerCase #PB_OS_Windows : Define NaechsteZeile$=#CRLF$
  CompilerCase #PB_OS_MacOS   : Define NaechsteZeile$=#CR$
CompilerEndSelect
Define LenLF=Len(NaechsteZeile$)
Define Dateiname$=OpenFileRequester("Bitte Datei wählen:","*.pb", "PureBasic (*.pb)|*.pb", 0)
Define Datei=OpenFile(#PB_Any,Dateiname$)
If 0=Datei Or 0=Lof(Datei) : Debug "Konnte Datei nicht öffnen:"+Dateiname$ :End :EndIf
Define ProgrammText$=ReadString(Datei,#PB_UTF8|#PB_File_IgnoreEOL,Lof(Datei))
CloseFile(Datei)
ProgrammText$=ReplaceString(ProgrammText$,":",NaechsteZeile$) ;ggf auskommentieren.
Define  MakroPosition=FindString(ProgrammText$,"Macro ",1)
While MakroPosition>0
  Define ZeilenEnde=FindString(ProgrammText$,NaechsteZeile$,MakroPosition)
  Define MakroName$=Trim(Mid(ProgrammText$,MakroPosition+6,ZeilenEnde-MakroPosition-6))     
  Define EndMakroPosition=FindString(ProgrammText$,"EndMacro",ZeilenEnde)
  Define MakroText$=Mid(ProgrammText$,ZeilenEnde+LenLF,EndMakroPosition-ZeilenEnde-LenLF)
  ProgrammText$=Left(ProgrammText$,EndMakroPosition+8)+NaechsteZeile$+
                ReplaceString(Mid(ProgrammText$,EndMakroPosition+8),MakroName$,MakroText$) 
  MakroPosition=FindString(ProgrammText$,"Macro ",EndMakroPosition+8)
Wend 
Dateiname$=ReplaceString(Dateiname$,".pb","pp.pb")
Datei=CreateFile(#PB_Any,Dateiname$)
If 0=Datei : Debug "Konnte Datei nicht öffnen:"+Dateiname$ :End :EndIf
WriteString(Datei,ProgrammText$)
CloseFile(Datei)
RunProgram(#PB_Compiler_Home+"PureBasic.exe",Dateiname$,"")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Assembler Error
BeitragVerfasst: 25.02.2018 17:06 
Offline

Registriert: 30.07.2008 16:02
Wohnort: Oberösterreich
Hallo an alle, hat etwas gedauert, aber coden / testen ... usw :?
ich habe vieles mit
Code:
includefile
ausgelagert, und somit die Macroaufrufe reduziert.
Software läuft einwandfrei, schnell und sauber
Fazit zum Schluss: Es müssen also die Anzahl der Macroaufrufe zu diesem Fehler geführt haben .
Danke nochmal an alle für die viele Anregung. Hab wieder einiges dazugelernt !
Stephan

_________________
Wenn Sie nichts zu Tun haben, tun Sie es bitte nicht hier.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye