Seite 1 von 1

Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Mo, 08. Jun 2020 6:48
von Eugeny Lutsenko
Ich möchte in der Lage sein, große Quelltexte zu kompilieren, die als eine einzelne Datei dargestellt werden. Es gibt jedoch einen Speicherfehler:

Code: Alles auswählen

d:\ALASKA\AIDOS-X>XPP __AIDOS-X 
__AIDOS-X.prg(0:0): fatal XBT0407: System memory exhausted
Fatal error, exiting
gibt es eine Möglichkeit, den Compiler so zu starten, dass er bei der Speichernutzung absolute Priorität vor anderen Laufenden Programmen hat? Ich habe versucht, im Internet zu finden, irgendwie gefunden, versucht, aber bisher habe ich es nicht geschafft

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Mo, 08. Jun 2020 8:12
von AUGE_OHR
hi Eugeny,
Eugeny Lutsenko hat geschrieben: Mo, 08. Jun 2020 6:48 Ich möchte in der Lage sein, große Quelltexte zu kompilieren, die als eine einzelne Datei dargestellt werden.
welchen Vorteil bringt eine grosse Source Code Datei :?:
schon beim laden in den Editor dauert es viel länger als wenn er nur "das nötigste" lädt.
Eugeny Lutsenko hat geschrieben: Mo, 08. Jun 2020 6:48 Es gibt jedoch einen Speicherfehler:

Code: Alles auswählen

d:\ALASKA\AIDOS-X>XPP __AIDOS-X 
__AIDOS-X.prg(0:0): fatal XBT0407: System memory exhausted
Fatal error, exiting
gibt es eine Möglichkeit, den Compiler so zu starten, dass er bei der Speichernutzung absolute Priorität vor anderen Laufenden Programmen hat?
es bringt auch nichts wenn du versuchst noch paar Byte zu finden ... du bist schon lange im roten Bereich. [-X

ob es jetzt die Grösse der PRG ist oder zu viele PUBLIC / PRIVATE Variablen ( DGROUP ? ) kann ich so nicht sagten nur das es "zu viel" ist.

---

man könnte alles was mit Drucken zu tun hat in ein PRG übertragen.
alle Punkte die von einem Menu ausgehen eignen sich zum auslagern in eine eigene PRG

Anmerkung : man sollte mit /W compilieren und immer alle Variabel definieren.

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Mo, 08. Jun 2020 13:08
von Frank Grossheinrich
Hallo Eugeny,
nur aus persönlichem Interesse: definiere "grosse Quelltexte". Wie groß ist dieses PRG?
Grüße, Frank

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Mo, 08. Jun 2020 21:57
von Eugeny Lutsenko
Frank Grossheinrich hat geschrieben: Mo, 08. Jun 2020 13:08 Hallo Eugeny,
nur aus persönlichem Interesse: definiere "grosse Quelltexte". Wie groß ist dieses PRG?
Grüße, Frank
Hier ist es: http://lc.kubagro.ru/__AIDOS-X.txt

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Mo, 08. Jun 2020 21:58
von Eugeny Lutsenko
AUGE_OHR!

Ich verstehe deine Argumente und verstehe, dass ich in vielerlei Hinsicht falsch Liege. Aber ich verstehe auch, dass ich mich so wohler fühle, wie ich es Tue.

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Di, 09. Jun 2020 0:35
von AUGE_OHR
hi Eugeny,

you have ask for help and i like to help.
but you must accept that some work is to do what you have miss.

---

i have CLICK Source of AIDOS
Processed 1 files, containing 134241 lines of source code
Time in process: 18:51
i´m just working on German VAT and Project have
Processed 171 files, containing 216535 lines of source code
Time in process: 15:32
more Code but less time the mean CLICK have to do more work with your Style of Code
more than 100000 lines in 1 x PRG is simple to much. you have to split it into more PRG to reduce Size


--- split Code to different PRG

CLASS CODE like MagicHelp should be in own PRG
if you have "modify" it with PUBLIC / PRIVATE than you use it wrong

Code to "fill" Array in can be in own PRG

Code: Alles auswählen

   aColor := Sp_Color()

FUNCTION Sp_Color()
LOCAL aColor := {}
   AADD( aColor, BD_BLUEMIST )                                        // GraMakeRGBColor({195,238,255})  // BLUE    
RETURN aColor
not sure about "help" but i recommend a external PRG
btw. how will those Text translate ... without Internet :?:

--- when using CLICK

CLICK not only "format" Source Code. it also generate Cross-Reference and can write Header to Function / Procedure
*+ Function Add_rec1_5()
*+ Called from ( aidosx.prg ) 1 - function f1_5()
if it have only 1 Entry than Function / Procedure can be change into STATIC FUNC / STATIC PROC when it is in same PRG

if there is no "Called from" than it is unsed Code ... :roll:
*+ Function LB_Inform()
*+ Function NextColSch()
*+ Function ExitColSch()
*+ Function GuiStdDialog()
*+ Function GetFilename()
*+ Function EditBlock()
*+ Function WriteField()
there are much more Code which are not used so clean-up your Code and delete it when not used

--- optimize

it is bad Programmer Style to "declare" PUBLIC / PRIVATE "somewhere" in Code. do it after LOCAL
also declare all as MEMVAR before 1st Function / Procedure

Variable like LOCAL will be clean by CG when not used any more.
PUBLIC / PRIVATE have to be RELEASE when not need else CG can´t clean-up

---

PUBLIC / PRIVATE are "easy" Way to use Variable but it can be hard to "follow" Variable in other Function / Procedure.

i got a Tool called "Summer93" which "eliminate" all PUBLIC and made Function of it

Code: Alles auswählen

STATIC xVar
FUNCTION MyVar(xValue)
   IF PCOUNT() > 0
      xVar := xValue
   ENDIF
RETURN xVar
this Concept i still use but enhance it to 2-Dim Array

Code: Alles auswählen

#xtranslate aJustDelete       => Stack\[SP, 1]
#xtranslate cGetWahl          => Stack\[SP, 2]
#xtranslate cNewPath          => Stack\[SP, 3]
...
#xtranslate cFilter           => Stack\[SP,51]

STATIC Stack := {}
STATIC SP    := 0

FUNCTION SP_INIT()                                                    // init STACK
   AADD( Stack, ARRAY( 51 ) )
   SP ++
   aJustDelete := {}
   cGetWahl := "*.*"
   cNewPath := ""
   ...
   cFilter := ""
RETURN NIL

FUNCTION SP_cFilter( xValue )
   IF PCOUNT() > 0
      cFilter := xValue
   ENDIF
RETURN cFilter
here 51 "PUBLIC" now use 1 Array with 51 Function and i can use n-Dim of it (MDI)

i also got a better "Overview" when Debug Code an look at "less" Variable
when using CLICK i got a Header which Function call it

--- Note about ";"

do NOT use Code Style like this with ";"

Code: Alles auswählen

SET ORDER TO 1;T=DBSEEK(STR(M_KodAdmAppls,8))
USE Classes EXCLUSIVE NEW;N_Cls = RECCOUNT()
USE aKodCls EXCLUSIVE NEW;ZAP
it work when using "+ ;" which is when it is "same line"

Compiler may accept it but other Tools like CLICK can fail which this Syntax

---

so there is a lot of work to do for next Step.
clean-up your Code and split it to different PRG

Report from CLICK can help you.
CLICK_AIDOS.ZIP
(1.1 MiB) 300-mal heruntergeladen
Note : AIDOSX.TXT will NOT compile as it include Error while CLICK have Problem with Syntax ( ";" Problem )

greetings by OHR
Jimmy
CLICK can be found here http://www.hmgforum.com/viewtopic.php?f ... k&start=74

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Di, 09. Jun 2020 7:12
von Tom
Das ist ein deutschsprachiges Forum, Jimmy.

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Di, 09. Jun 2020 13:27
von Eugeny Lutsenko
Jimmy!

Vielen Dank für Ihre Reaktionsfähigkeit und wertvolle Tipps. Wirklich wertvoll. Aber du sagst richtig, dass es viel Arbeit braucht, um deinen Rat zu nutzen. Du sagst zu Recht, dass mein Programmierstil schlecht ist. Aber da das System groß ist, kann ich deinen Rat kaum gebrauchen. Ich habe einfach keine Zeit dafür. Um ehrlich zu sein, denke ich, dass, wenn man so viel Arbeit in Sie investiert, es notwendig ist, eine andere Programmiersprache zu verwenden. Ich denke, diese C# - Sprache.

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Di, 09. Jun 2020 18:10
von brandelh
Eine so große Quellcode Datei macht einfach keinen Sinn,
meine größte ist 13000 Zeilen lang und nur weil Xbase++ eine Klasse nicht in 2 PRG verteilen kann.
PBUILD.EXE macht die Verwaltung von mehreren PRG zu einer EXE wirklich einfach, und die Verteilung der Funktionen Methoden auf sinnvolle kleinere Dateien macht Sinn.

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Di, 09. Jun 2020 19:14
von AUGE_OHR
hi,
Eugeny Lutsenko hat geschrieben: Di, 09. Jun 2020 13:27 Ich habe einfach keine Zeit dafür. Um ehrlich zu sein, denke ich, dass, wenn man so viel Arbeit in Sie investiert, es notwendig ist, eine andere Programmiersprache zu verwenden. Ich denke, diese C# - Sprache.
it is your App which does not compile if you don´t fix it.
what is the Problem to DELETE unused Code to reduce Size :?:

how long have you work with xBase ... i guess you will need same time to learn other Language to get to same Level.

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Di, 09. Jun 2020 20:16
von Tom
Es hat überhaupt keinen Benefit für Eugeny, wenn Du die englische Sprache verwendest, Jimmy, denn auch die übersetzt er mit GoogleTranslate ins Russische. Er kann nur diese Sprache.

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Di, 09. Jun 2020 23:34
von AUGE_OHR
hi,

wollt ihr Eugeny helfen oder nur mich nerven ?
hat einer von euch sich den Code von Eugeny runter geladen und angesehen ...

Ich habe konkrete Vorschläge gemacht wie man den Code wieder zum laufen bekommt.
man muss nur "aufräumen" und Code der nicht genutzt wird LÖSCHEN wobei die Auswertung von CLICK helfen kann

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Mi, 10. Jun 2020 2:35
von AUGE_OHR
hi Eugeny,

warum bindest du Source von Express++ "direkt" ein .... und "nutzt" es noch nicht mal :roll:

wenn Roger Änderungen am Source machst bekommst du es nicht mit bzw. wir können deine Fehler nicht nachvollziehen denn wer weiss was du am Source von Express++ gemacht hast.

wenn du wenigstens die DC Function in eine separate DLL auslagern würdest ... es ist ja sowieso nicht "dein" Code

du musst ja trotzdem die Runtime mit den DLL ausliefert denn nur ein EXE kann Xbase++ nicht.

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Mi, 10. Jun 2020 5:35
von Jan
AUGE_OHR hat geschrieben: Di, 09. Jun 2020 23:34wollt ihr Eugeny helfen oder nur mich nerven ?
hat einer von euch hat sich den Code von Eugeny runter geladen und angesehen ...
Jimmy,

Du verstehst gerne falsch, oder? Niemand hat etwas zum Fachlichen von Deinen Erläuterungen gesagt. Sondern lediglich darauf hingewiesen, das dieses Forum im Regelfall deutsch und nicht englisch geführt wird. Und das es bei Eugeny keinen Sinn macht englisch zu schreiben, weil er das so oder so ins Russische übersetzen wird.

Also reg Dich bitte wieder ab.

Jan

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Mi, 10. Jun 2020 6:41
von Eugeny Lutsenko
https://translate.yandex.ru/:

Ich bin allen sehr dankbar für wertvolle Tipps. Mein großer Quellcode kompiliert perfekt auf meinem Computer. Es ist immer auf dem neuesten Stand unter: http://lc.kubagro.ru/__AIDOS-X.txt nach Jimmys Bemerkungen sehe ich, dass er es wirklich genau studiert hat. Ich werde wirklich manchmal ungenutzte Fragmente aus diesem großen Quellcode entfernen. Genauer gesagt lösche ich Sie manchmal, und manchmal mache ich Kommentare. Persönlich ist es mir egal, in welcher Sprache das Forum. Ich benutze wirklich einen automatisierten übersetzer. Nur ich benutze https://translate.yandex.ru/, da Experten (Muttersprachler mehrerer Sprachen) sagen, dass es mit Russisch besser funktioniert als https://translate.google.com/. aber ich respektiere die Schöpfer und Besucher des Forums und benutze die von Ihnen empfohlene Sprache. Ich, wie Jimmy bemerkt hat, ändere manchmal die Express-Quellen oder andere, wenn ich Sie brauche. Im Allgemeinen bin ich allen sehr dankbar und möchte, dass alle Zusammenleben und erfolgreich zusammen Ihre Ziele erreichen. Ich bin mir sicher, dass Sie das tun werden.

https://translate.google.com/:

Ich bin allen sehr dankbar für wertvolle Ratschläge. Mein großartiger Quellcode lässt sich gut auf meinem Computer kompilieren. Es ist immer aktuell unter dem Link: http://lc.kubagro.ru/__AIDOS-X.txt. Aus Jimmys Bemerkungen geht hervor, dass er es wirklich sorgfältig studiert hat. Ich entferne wirklich manchmal nicht verwendete Schnipsel aus diesem großen Quellcode. Genauer gesagt, ich lösche sie manchmal und mache manchmal Kommentare. Persönlich ist es mir egal, in welcher Sprache das Forum ist. Ich benutze wirklich einen automatisierten Übersetzer. Nur ich benutze https://translate.yandex.ru/, weil Experten (Sprecher mehrerer Sprachen) sagen, dass er besser mit Russisch arbeitet als mit https://translate.google.com/. Aber ich respektiere die Schöpfer und Besucher des Forums und verwende ihre empfohlene Sprache. Wie Jimmy bemerkte, ändere ich wirklich manchmal den Express-Quellcode oder einen anderen, wenn ich ihn brauche. Im Allgemeinen bin ich allen sehr dankbar und möchte, dass alle zusammen leben und ihre Ziele erfolgreich gemeinsam erreichen. Ich bin sicher, dass es einfacher ist, dies auf einem Militär zu tun, als einzeln oder in Konfrontation miteinander.

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Mi, 10. Jun 2020 8:34
von flanelli
irgendwie kommt bei mir das leise gefühl auf, dass es beim genossen nicht so ganz mit rechten dingen zugeht...
ich neige keineswegs zu verschwörungstheorien und trage auch keinen aluhut aber es wirkt irgendwie "trollig" ...
Eugeny Lutsenko hat geschrieben: Mo, 08. Jun 2020 6:48 Ich möchte in der Lage sein, große Quelltexte zu kompilieren, die als eine einzelne Datei dargestellt werden. Es gibt jedoch einen Speicherfehler:

Code: Alles auswählen

d:\ALASKA\AIDOS-X>XPP __AIDOS-X 
__AIDOS-X.prg(0:0): fatal XBT0407: System memory exhausted
Fatal error, exiting
gibt es eine Möglichkeit, den Compiler so zu starten, dass er bei der Speichernutzung absolute Priorität vor anderen Laufenden Programmen hat? Ich habe versucht, im Internet zu finden, irgendwie gefunden, versucht, aber bisher habe ich es nicht geschafft
und nach einigem hin und her ohne eines hinweises auf eine nun fehlerbefreiende "startmöglichkeit" des compilers
sowie keinerlei anzeichen, dass sich prinzipiell etwas an dem "monster" etwas geändert hat, ist beim genossen plötzlich doch alles eitel wonne und perfekt...

ein schelm wer böses dabei denkt :-)
Eugeny Lutsenko hat geschrieben: Mi, 10. Jun 2020 6:41 https://translate.yandex.ru/:
Ich bin allen sehr dankbar für wertvolle Tipps. Mein großer Quellcode kompiliert perfekt auf meinem Computer. Es ist immer auf dem neuesten Stand unter: http://lc.kubagro.ru/__AIDOS-X.txt

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Mi, 10. Jun 2020 10:44
von Tom
Hallo, Jimmy.

Wir helfen und lernen hier (von)einander. Nicht alle können gut genug englisch, um sich in dieser Sprache auszutauschen, was ja seinerzeit einer der Gründe dafür war, das Forum ins Leben zu rufen, weil die Alaska-NGs auf englisch waren. Eugeny profitiert auch nicht davon, wenn Du hier plötzlich englisch redest, weil er das sowieso übersetzen muss, also: Wofür? Du hinderst nur einige Leute hier daran, sich an dieser Sache zu beteiligen.

Apropos. Ich kenne den Code längst und habe schon mehrfach drübergeschaut - Eugeny ist ja schon seit einer Weile in Rogers Forum. Einen anderen Tipp als den, das a) aufzuräumen und b) aufzuteilen, hätte ich aber auch nicht geben wollen. Wenn man richtig in die Codeanalyse geht und Redundanzen sucht, optimiert und anderes mehr, bietet man eine Dienstleistung an, die sich einige viel kosten lassen.

@flanelli: Du gehst wahrscheinlich auch auf "Hygienedemos", oder?

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Mi, 10. Jun 2020 12:03
von flanelli
@tom
wie ich ja deutlich angeführt habe, neige ich weder zu verschwörungstheorien noch einem aluhuttragen [-X
und "Hygienedemos" zu besuchen überlasse ich als gestandener österreicher liebend gerne den "wackeren" bundesdeutschen :lol:

ich finde es lediglich recht eigenartig wenn zum einen im eingangsposting nach einer lösung gesucht wird weil
es beim kompilieren zu einem speicherfehler kommt und sodann plötzlich OHNE eine dargestellte lösung für dieses
problem das komplieren doch perfekt läuft.
also was jetzt... gibts ein problem oder gibts es keines?

anyway, ich klinke mich da wieder aus bevor noch jemand auf die idee kommt mir einen aluhut auf die birne zu stoppeln :angel8:
und überlasse das schlachtfeld gerne dem umtriebigen jimmy :badgrin:

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: Mi, 10. Jun 2020 13:11
von Eugeny Lutsenko
Das Problem ist sicherlich da. Ja, ich kann noch kompilieren. Das Problem ist, dass ich das nicht immer kann. Das ist das Problem. Das interessiert mich. Früher, als der Quellcode kleiner war, gab es dieses Problem überhaupt nicht. Dann kam das Problem, war aber nicht akut. Jetzt ist Sie scharf. Deshalb habe ich dieses Thema aufgegriffen. Obwohl ich auch kompilieren kann.

Das Problem ist, dass, damit mein großer Quellcode perfekt und ohne Probleme kompiliert wird, ich manchmal den Computer neugarotieren muss. Ich bin nicht etwas, das Angst macht, aber etwas alarmierend. Es scheint mir, dass es früher oder überhaupt nicht war oder war, aber seltener als jetzt. Manchmal bereite ich einige Teile dieses Originals wirklich Weg oder mache Sie kommentarlos. Das heißt, ich mache etwas, das mit einem von Jimmys Rat übereinstimmt. Ich empfinde das Forum nicht als Schlachtfeld. Ich Stimme Tom zu, dass wir alle hier sind, um voneinander zu lernen und uns gegenseitig zu helfen. Natürlich ist jemand mehr zu lernen (wie ich), und jemand mehr hilft, wie andere Mitglieder des Forums. Ich bin weit davon entfernt, jemanden zum lachen zu bringen und undankbar zu sein. Aber ich kann einfach nicht alles auf einmal beschreiben. Also, wenn ich jemanden mit meinen Nachrichten und einem automatisierten übersetzer in die Irre geführt habe, dann entschuldige ich mich.

Ich verstehe vollkommen, dass es notwendig ist, großen Quellcode in Teile zu teilen. Ich verstehe vollkommen, dass es notwendig ist, die Qualität des Quellcodes zu verbessern: Variablen usw. zu optimieren Das heißt, ich verstehe, was die Teilnehmer des Forums sagen und Stimme all dem zu. Aber ich erkannte Tom, der erwähnte, dass das alles eine große Arbeit war. In der Tat ist es eine Frage, dass es notwendig ist, alles zu überdenken und ein neues System zu schaffen. Neben dem großen Quellcode in einer Datei hat es viele andere Nachteile, die auch überwunden werden müssen. Ich bin nicht bereit, diesen Job zu übernehmen.

Also arbeite ich mit dem, was da ist, und verbessere es nach und nach. Darüber hinaus entwickeln andere Entwickler externe Module für das Eidos-System. Früher wurde es auf Delphi gemacht, und jetzt in C#. Dies ermöglicht es, einige der Einschränkungen des Eidos-Systems zu überwinden, einschließlich der Tatsache, dass es in Alaska geschrieben ist.

Re: Wie kompiliere ich großen Quellcode mit einer einzigen Datei ohne Speicherfehler?

Verfasst: So, 01. Nov 2020 6:57
von Eugeny Lutsenko
Hallo, alle zusammen!

Das ist der Moment, wo ich den Quellcode nicht mehr kompilieren kann, der ungefähr 130.000 Zeilen geworden ist.

Ich beschloss, die Technologie der Arbeit mit Projekten an einem kleinen Beispiel zu meistern, das ich vor kurzem gemacht habe. Dies ist ein CSV-DBF-Konverter. Mit cl.bat ausführbares Modul " CsvDbfConv.exe " völlig normal erstellt und funktioniert einwandfrei.

Ich habe den Quellcode in zwei Teile aufgeteilt: den Hauptteil und mit Teilfunktionen. Machte eine Datei: "1_Creating a project file.bat". Es erstellt eine Projektdatei: "PROJECT.XPJ". Ich starte es, das dosovskoe Fenster blinkt und das war ' S. Es wird nichts kompiliert und es wird kein ausführbares Modul erstellt.

Die erste Frage ist, was ist mein Fehler und was muss ich in der Projektdatei ändern, damit es ein GUI ausführbares Programmmodul erstellt. Archiv-Ordner mit allen Dateien Anhängen.

Die zweite Frage, die ich im Zusammenhang mit, wie man ein Symbol auf dem ausführbaren Modul, das auf der Datei angezeigt wird, und wenn es in ausgeführt wird, dann in der Taskleiste.