#ifdef

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Manfred hat geschrieben:Die Funktion ist ein PRG, wie ich anfangs schon erwähnte. Ich will das nur nicht überall mit einbinden, wo ich sie nicht brauche. Deshalb habe ich diesen Versuch gestartet.
Du meinst sie steht in einem anderen PRG, das in deiner XPJ Datei nur manchmal eingebunden wird ?

Oder bindest du es immer ein ? Wenn ja, ist die Funktion in der EXE und nur der Aufruf wird 'ausgeschnitten'.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Manfred hat geschrieben:Also, ganz an den Anfang des Programmes gesetzt, erscheint die Messagebox wirklich ... Also gilt der Compiler Schalter wohl nicht programmweit.
Hallo Manfred,

ein #DEFINE gilt ab seinem Auftreten in der PRG bis zum Ende oder #UNDEF. Also funktioniert der Compilerschalter auf jede compilierte Datei, solange dort kein #undef vorkommt.

Ich rate dir, die MSGBOX vom Anfang immer näher an das Problem zu schieben um zu sehen wo sie was tut und wo nicht, z.B. direkt vor die Zeile mit wgvt() .
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Puh,

ich merke ich hole immer Problemfälle aus dem Keller.... :shock:

Also, ich habe eine Klasse gebaut, in der Methoden sind. Diese Klasse wird aber in jedem Programm benutzt. In der Klasse ist eine Methode, die die Eingabefelder überprüft und dann bei Bedarf eine Funktion aufruft, die es aber nur in einer PRG Datei gibt, die nur ab und an benutzt wird. Die Methode wird genauso selten benutzt. Ich habe bei der Programmierung das übersehen. Wäre nicht schlimm, dieses OBJ File könnte ja eingebunden werden in die anderen Programme. Jetzt fiel mir aber irgendwie die Sache mit dem #ifdef ein und ich habe gedacht, damit könnte ich mein Problem lösen. Was nun? Ich habe ein größeres Problem am Hals.

ich möchte nur eine Funktion verschwinden lassen, die ich nicht überall brauche. Tja, das war dann wohl nix
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Habe ich gemacht Hubert,

sobald sie aus der Main Procedure verschwindet und in eine darauffolgende Programmdatei kommt klappt sie nicht mehr.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Diese Methode ist oft besser als der Debugger ...

Noch besser ist die ALTERNATE Datei ...

Code: Alles auswählen

proc main

   set alternate to test.txt
   set alternate on 
   set console off     // SEHR WICHTIG IM GUI MODUS !
   ...
   irgendwann
   ... 
   ? "vor dem Problem"
   if LiegtHierEinProblem()
      ? "Ich bin im Proglemteil"
      ...
da kann man nachher prüfen und auch Variablen anzeigen lassen ohne z.B. Bei GUI Programmen FOCUS-Wechsel einzuleiten etc.

Ich denke du bist dem Problem recht nahe ... und es ist nicht der #ifdef Teil, solange du dort keinen Tippfehler hast. :wink:
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Manfred,

1. zeige uns doch mal die XPJ Datei komplett ...

2. Man kann mit IsFunction("MyFunc") abfragen ob eine funktion verfügbar ist und dann z.B. mit eval( &({||"MyFunc()"}) ) den Aufruf überspringen:

Code: Alles auswählen

if IsFunction("MyFunc")
   eval( &("{||MyFunc()}") )
   ...
3. Nutzt du 'set procedure to ...' Befehle ?
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hallo Manfred,

1. zeige uns doch mal die XPJ Datei komplett ...
Dein Wunsch ist mir Befehl....

Code: Alles auswählen

[PROJECT]
    VERSION       = 2.0
    OPENFILES     = zubehoervt.prg;zahlungsartvt.prg;wgvt.prg;
versandartvt.prg;titelvt.prg;systemevt.prg;steuersatzvt.prg;
shdstammdatenklassen.prg;shdstammdaten.prg;plzvt.prg;
phononet.prg;phntontraegerarten.prg;phnprogrammarten.prg;
phngenresw.prg;phnartikelkonvert.prg;phnartikel2vostamm.prg;
personalvt.prg;kundenvt.prg;kdanredevt.prg;interpretvt.prg;genrevt.prg;
buchungktovt.prg
    shdstammdaten.XPJ

[shdstammdaten.XPJ]
    \videoneu\programm\shdstammdaten.exe

[\videoneu\programm\shdstammdaten.exe]
    COMPILE       = xpp
    COMPILE_FLAGS = /q /w /wi /wu /ga /dSTAMMDATEN
    DEBUG         = yes
    GUI           = yes
    LINKER        = alink
    LINK_FLAGS    =
    RC_COMPILE    = arc
    RC_FLAGS      = /v
    PRE_BUILD=del *.obj
    PRE_BUILD=del \videoneu\programm\shdstammdaten.exe
// $START-AUTODEPEND
    APPEVENT.ch
    COLLAT.CH
    DBSTRUCT.CH
    FONT.CH
    GET.CH
    GRA.CH
    MEMVAR.CH
    NATMSG.CH
    PROMPT.CH
    SET.CH
    STD.CH
    buchungktovt.obj
    genrevt.obj
    interpretvt.obj
    kdanredevt.obj
    kundenvt.obj
    personalvt.obj
    phnartikel2vostamm.obj
    phnartikelkonvert.obj
    phngenresw.obj
    phnprogrammarten.obj
    phntontraegerarten.obj
    phononet.obj
    plzvt.obj
    shdstammdaten.obj
    shdstammdatenklassen.obj
    steuersatzvt.obj
    systemevt.obj
    titelvt.obj
    versandartvt.obj
    wgvt.obj
    zahlungsartvt.obj
    zubehoervt.obj
// $STOP-AUTODEPEND
    ..\..\..\zusaetze\allgemein\classean.obj
    ..\..\..\zusaetze\allgemein\classMessage.obj
    ..\..\..\zusaetze\allgemein\classparameter.obj
    ..\..\..\zusaetze\allgemein\classScreen.obj
    ..\..\..\zusaetze\allgemein\funktionen.obj
    ..\..\..\zusaetze\sys\errorsys_d.obj
    ..\..\..\zusaetzeneu\allgemein\classDatabase.obj
    ..\..\..\zusaetzeneu\sys\appsyslow_d.obj
    ..\..\..\zusaetzeneu\sys\dbesys_d.obj
    ..\..\..\zusaetzeneu\video\classvideodb.obj
    XBTBASE1.LIB
    XBTBASE2.lib
    buchungktovt.prg
    genrevt.prg
    interpretvt.prg
    kdanredevt.prg
    kundenvt.prg
    personalvt.prg
    phnartikel2vostamm.prg
    phnartikelkonvert.prg
    phngenresw.prg
    phnprogrammarten.prg
    phntontraegerarten.prg
    phononet.prg
    plzvt.prg
    shdstammdaten.prg
    shdstammdatenklassen.prg
    steuersatzvt.prg
    systemevt.prg
    titelvt.prg
    versandartvt.prg
    wgvt.prg
    zahlungsartvt.prg
    zubehoervt.prg
2. Man kann mit IsFunction("MyFunc") abfragen ob eine funktion verfügbar ist und dann z.B. mit eval( &({||"MyFunc()"}) ) den Aufruf überspringen:

Code: Alles auswählen

if IsFunction("MyFunc")
   eval( &("{||MyFunc()}") )
   ...
3. Nutzt du 'set procedure to ...' Befehle ?
nein, nutze ich nicht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Huch, die ist ja etwas gewachsen in VX ...
wgvt.prg
ist in diesem PRG die genannte Funktion ?
Wenn ja, wie ?

1. #include...
function wgvt(...)
...
return ...

oder

2. einfach durch automatische Namensvergabe des Compilers wie früher unter Clipper mit set procedure to üblich ?

wenn 1. bin ich mit meinen Ideen am Ende
wenn 2. eventuell mag er das nicht und du solltest dort ein function ... einbauen.

Ehrlich bin ich etwas ratlos, eigentlich müssten die Prozessordirektiven immer gelten ....
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Manfred,

wenn ich es mir recht überlege, sind die paar KByte den Aufwand der Suche kaum wert, knall es rein und nimm eine normale IF Anweisung ob es kommen soll oder nicht :wink:
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Manfred,

ich habe mal ein 2 Dateien Programm im VX erzeugt und das ganze ausprobiert, es funktioniert wie gewünscht.
MAIN.PRG

Code: Alles auswählen

//////////////////////////////////////////////////////////////////////
//
//  Copyright:
//        Your Copyright goes here., (c) 2000. All rights reserved.
//
//  Contents:
//        This is a standard console mode exe.
//
//////////////////////////////////////////////////////////////////////

#include "Common.ch"
/* This is our main procedure
 */
PROCEDURE Main
   /* we use the ansi charset by default */
   SET CHARSET TO ANSI
   ? "Test äöü ß ²³ €"
   #ifdef STAMMDATEN
      ? "MAIN - STAMMDATEN"
   #endif
   ? "Funktion GleichePRG()",GleichePRG()
   ? "Funktion AnderePRG()",AnderePRG()
   ? "Ende"
   wait
   /* $TODO: place your application code here */
RETURN
function GleichePRG()
   local cTXT
   #ifdef STAMMDATEN
      cTXT := "MAIN.PRG - GleichePRG - STAMMDATEN"
   #else
      cTXT := "Nicht gefunden"
   #endif
return cTXT
AnderePRG.prg

Code: Alles auswählen

function AnderePRG()
   local cTXT
   #ifdef STAMMDATEN
      cTXT := "MAIN.PRG - AnderePRG - STAMMDATEN"
   #else
      cTXT := "Nicht gefunden"
   #endif
return cTXT
Project.xpj

Code: Alles auswählen

[PROJECT]
    VERSION       = 2.0
    Project.xpj

[Project.xpj]
    Test.EXE

[Test.EXE]
    COMPILE       = xpp
    COMPILE_FLAGS = /err:10 /ga /wi /wl /wu /n /q /w /dSTAMMDATEN 
    DEBUG         = yes
    GUI           = no
    LINKER        = alink
    LINK_FLAGS    = 
    RC_COMPILE    = arc
    RC_FLAGS      = /v
// $START-AUTODEPEND
    AnderePRG.obj
    MAIN.obj
// $STOP-AUTODEPEND
    AnderePRG.prg
    MAIN.PRG
Wie gesagt, bei mir funktioniert dieses schon sehr lange, was bei dir anders ist, bin ich jetzt überfragt. Anfangs habe ich so die Clipper und XBase++ Version unterschieden - alles in einem Quellcodeordner.

Wegen der unnötigen Funktion in einer EXE würde ich mir aber keinen Kopf machen.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Moin Hubert,

Ich werde mir heute nochmal die Sache in aller Ruhe ansehen. der einzige Unterschied bei mir ist, das es in einer Methode aufgerufen wird, sollte doch aber egal sein.

Aber wie schon gestern geschrieben, außerhalb der Main klappt es schon nicht mehr. Das Einbinden der OBJ Datei in alle Programme ist nicht das Problem, es war halt nur eine idee, mal etwas anderes auszuprobieren.....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Manfred hat geschrieben:Das Einbinden der OBJ Datei in alle Programme ist nicht das Problem, es war halt nur eine idee, mal etwas anderes auszuprobieren.....
Hallo Manfred, solange du weißt, dass diese natürlich nicht mehr von Compilerschaltern berührt werden (sie werden ja auch nicht kompiliert) ist das schon richtig.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi,

tja, ich glaube ich werde mich langsam aus diesem Forum zurückziehen. Dieses Problem hier dürfte langsam die Schmerzgrenze der Peinlichkeiten erreicht haben.

Also, ich gehe nochmal der Reihe nach durch:

1) die define Konstante muß zum Zeitpunkt des kompilierens bekannt sein.
2) Wenn sie nicht bekannt ist, dann kann sie auch nicht klappen.
3) Wenn man keine Ahnung hat, dann sollte man einfach mal die Fresse halten.

Ich denke mal, ich habe den Fehler gefunden und warte nur noch auf den Tag an dem ihr alle gleich bei meiner Fragestellung "Geh nach Haus und üb erstmal" ausruft.

Ich habe die Abfrage #ifdef in ein anderes Programm eingebaut und dort klappt es hervorragend. Dann habe ich mich etwas zurückgelehnt und nachgedacht, woran dieses blöde Problem denn scheitert. Nun, dann fiel mir plötzlich und unvermutet ein: "Manfred, Du Blödmann, diese #ifdef Abfrage ist in einer Zusatzbibliothek, die zu dem Zeitpunkt überhaupt nichts weiß von der #define Angelegenheit, weil der Compiler Schalter in der Projektdatei steht und erst viel später gesetzt wird, nämlich dann, wenn die Klasse schon längst als Obj-Datei vorhanden ist.

So und jetzt tut mir den Gefallen und sagt mir, dass die oben erwähnte Denkweise falsch und deshalb nicht der Grund ist, ansonsten schäme ich mit zu Tode. :roll:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16509
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
Manfred hat geschrieben:tja, ich glaube ich werde mich langsam aus diesem Forum zurückziehen.
nein - das lass' mal lieber!
Nun, wenn ich Dich richtig verstehe, hast Du eine Zusatzbibliothek, in der die betreffende Funktion enthalten ist, die den Schalter prüfen soll.
Den Schalter hast Du aber nicht beim Kompilieren der Zusatzbibliothek angegeben, sondern beim Kompilieren Deiner EXE, die diese Zusatzbibliothek auch mit benutzt.
Ist dem so? Wenn ja, dann hast Du das gerade eben richtig erkannt.
In dem Fall solltest Du Dir überlegen, ob Du die Parameterliste der Funktion nicht erweiterst und abhängig vom Kompilierschalter einen entsprechenden Wert mit übergibst. Auf diesen kannst Du dann ja innerhalb der Funktion entsprechend reagieren.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Moin Manfred,

bleib mal lieber. Vor allem, weil ich von Deinen Fragen und den Antworten darauf selber noch genügend lernen kann :-)

Aber im ernst: Manchmal ist das eben einfach so, daß man wie Ochs vorm Berge steht. Klar ist das manchmal peinlich wenn mann dann die Lösung findet. Aber das kann schließlich jedem passieren. Und Anfängerfragen sind doch auch mal was schönes, da kann dann auch ein anderer Anfänger mal was schlaues zu abgeben 8)

Jan
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16509
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jan,
Jan hat geschrieben:Klar ist das manchmal peinlich wenn mann dann die Lösung findet.
oder frau :D
Jan hat geschrieben:Aber das kann schließlich jedem passieren. Und Anfängerfragen sind doch auch mal was schönes, da kann dann auch ein anderer Anfänger mal was schlaues zu abgeben
Oder auch genug andere Anfänger, die sich selber nicht trauen, genau diese Fragen zu stellen, können davon profitieren :!:

Viele Grüße,
Martin
Zuletzt geändert von Martin Altmann am Fr, 09. Jun 2006 10:42, insgesamt 1-mal geändert.
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Leute Leute,

danke für den Trost, aber nach über 15 Jahren Clipperprogrammierung, sollte doch mehr hängengeblieben sein. Seitdem ich auf Xbase++ umgestiegen bin frage ich mich täglich, wie das alles früher klappen konnte. Es war mehr oder weniger von hinten durch die Brust programmiert.

Eigentlich schrecklich, es waren durchaus große Projekte dabei, die auch heute noch laufen.

PS: Aber wie sagt man so schön:"Was Hänschen nicht lernt, lernt Hans um so besser:"
Zuletzt geändert von Manfred am Fr, 09. Jun 2006 10:56, insgesamt 1-mal geändert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hey Martin,
Martin hat geschrieben:oder frau
Musst Du so auf meine Rechtschreibfehler achten?
Martin hat geschrieben:Oder auch genug andere Anfänger, die sich selber nicht trauen, genau diese Fragen zustellen, können davon profitieren
Das war das was ich mit diesem Satz
Jan hat geschrieben:Vor allem, weil ich von Deinen Fragen und den Antworten darauf selber noch genügend lernen kann
Ich wollte das nur eleganter verpacken und mich nicht ganz so bloß stellen.

Jan
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16509
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jan,
Jan hat geschrieben:Musst Du so auf meine Rechtschreibfehler achten?
sorry - ich konnte nicht widerstehen :D
Normalerweise ist dafür ja der Tom zuständig, aber der war gerade nicht greifbar :lol:
Aber keine Sorge - war nicht böse gemeint :!:

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16509
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
Manfred hat geschrieben:PS: Aber wie sagt man so schön:"Was Hänschen nicht lernt, lernt Hans um so besser"
und in diesem Sinne: Bleibe ruhig dabei :!: und überlege Dir doch ruhig mal, ob Du nicht auch mal an einer DevCon teilnehmen willst...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Manfred,

ich kanns mir einfach nicht verkeifen nochmals auf meinen schon öffters geäußerte Meinung hinzuweisen ...

Bibliotheken nutzt man direkt im Quellcode und nicht vorkompiliert als OBJ :!:

Aber lass dich nicht abschrecken unsere Gehirne zu fordern :D

Und damit du siehts, dass auch ich mal was nicht weiß, stelle ich gleich ne Anfrage hier rein ...
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Hubert,

ich würde es ja gerne machen, aber es klappt nicht so, wie ich es haben will. Deine Version, gefiel mir nicht so richtig, mit dem kopieren usw. Wenn ich dem Projektfile klarmachen könnte, das wo die PRG steht, soll auch das Obj File hin, wäre alles gegessen.

@Martin,

sicherlich würde ich bei einer DEVCon dabeisein wollen, aber mein Englisch ist nicht so gut, dass ich den Vorträgen folgen könnte. Mir fehlt die Routine und das dementsprechende Vokabular.

Und noch was: Keine Sorge, ich bleibe euch erhalten. Ich werde noch viel mehr so "harte" Fragen stellen. Glücklicherweise weiß ich ja selten, bzw. vorher nie ob die duesselig war/ist, oder nicht ;-) Und nachher ist eh alles egal... :-)
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Manfred,

vielleicht geht es so eleganter ...

Angenommen du hast diese Zusatzbibliotheken, bisher über OBJ gelinkt und die PRGs stehen an einem Ort:

\Bibliothek\allgemein\allgemein.prg
\Bibliothek\xyz\sonstiges.prg

Bisher hast du gelinkt

?\allgemein.obj
?\sonstiges.obj

Nun bindest du EINE ganz normale PRG in dein Projekt ein, die nur includes auf alle deine Bibliotheken hat, wobei nur die benötigten aktiviert werden (Rest mit *):

LinkBibliothek.PRG:

Code: Alles auswählen

#include "\Bibliothek\allgemein\allgemein.prg"
#include "\Bibliothek\xyz\sonstiges.prg"
Somit würde beim Compilieren der Quellcode direkt aus der einzigen PRG geladen und in eine lokale OBJ übersetzt, die ganz normal gelinkt würde.

Wäre einen Versuch wert.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Hubert,

stimmt, an sowas hatte ich schon mal gedacht und ich habe es auch schon mal im Einsatz gesehen. Muß ich nochmals testen. Ich habe im Moment keine Ahnung, warum ich das damals nicht gemacht habe. Aber ich werde es sicherlich gleich wissen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Hubert,

hm, leider sind in allen in Frage kommenden PRGs include Dateien, die gleich sind und da meckert der Compiler natürlich über Mehrfachdeklarierung der K_ESC usw. Tasten
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten