Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   unklare Definition von Compilerschalter (https://www.delphipraxis.net/182981-unklare-definition-von-compilerschalter.html)

Helmi 1. Dez 2014 17:43


unklare Definition von Compilerschalter
 
Hallo,

ich hab in einer Komponente folgenden Code:

Delphi-Quellcode:
{$ifdef LINUX}
  //irgend ein Code
{$endif}
{$ifdef WIN32}
  //irgend ein Code
{$endif}
Auf was bezieht sich das WIN32? - auf das installierte Windows (bei mir 64 bit) oder auf Installation von Delphi (XE2 scheint ja 32 bit zu sein)

himitsu 1. Dez 2014 17:47

AW: unklare Definition von Compilerschalter
 
IMMER auf den Compiler, also das Ziel, für welches er kompiliert.

Auf aktive Dinge kann man nachträglich (nach dem Kompilieren) natürlich nicht prüfen, also wie z.B. das akuelle Windows, wo das Programm läuft.

Helmi 1. Dez 2014 17:53

AW: unklare Definition von Compilerschalter
 
Zitat:

Zitat von himitsu (Beitrag 1281861)
IMMER auf den Compiler, also das Ziel, für welches er kompiliert.

Auf aktive Dinge kann man nachträglich (nach dem Kompilieren) natürlich nicht prüfen, also wie z.B. das akuelle Windows, wo das Programm läuft.

Danke! - macht irgendwie Sinn

Helmi 14. Dez 2014 19:08

AW: unklare Definition von Compilerschalter
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

so richtig durchblicken tu ich mit diesen Compiler-Schalter nicht

Ich hab folgendes Problem:

Wie auf dem Bild zu sehen ist, ist zwar 32-Bit Windows aktiviert, im Code läuft er aber immer
in den Linux-Teil hinein (wenn ich mich durchstep).

Wie kann das sein? - Kann man das noch irgendwo einrichten?

Nebenbei bemerkt:
Der Code stammt aus einer Komponente (libnodave) und wurde in ein Package installiert, das aber
32-bit Windows ist

Stevie 15. Dez 2014 07:29

AW: unklare Definition von Compilerschalter
 
Die LINUX Direktive stammt noch aus Kylix Zeiten, soweit ich weiß und wird aktuell gar nicht gesetzt.
Daher glaube ich eher, dass dort in der Komponente irgendwo ein IFDEF nicht richtig zieht und das möglicherweise anschaltet.

himitsu 15. Dez 2014 08:00

AW: unklare Definition von Compilerschalter
 
Angeblich soll es "bald" wieder Linux geben, aber egal.

Was steht denn in Projektoption > Delphi-Compiler > Bedingungen, denn einige Defines werden dort definiert, wie z.B. das DEBUG.
Und hast du im Code mal nach
Delphi-Quellcode:
{$DEFINE
gesucht?

Helmi 15. Dez 2014 08:49

AW: unklare Definition von Compilerschalter
 
Zitat:

Zitat von himitsu (Beitrag 1283414)
Was steht denn in Projektoption > Delphi-Compiler > Bedingungen, denn einige Defines werden dort definiert, wie z.B. das DEBUG.

Dort ist nur DEBUG definiert - sonst nichts

Zitat:

Zitat von himitsu (Beitrag 1283414)
Und hast du im Code mal nach
Delphi-Quellcode:
{$DEFINE
gesucht?

ja - aber in den Units der Komponente gibt es zwar $DEFINE´s - aber keine die LINUX oder WIN32 lauten

himitsu 15. Dez 2014 09:35

AW: unklare Definition von Compilerschalter
 
Beim Debuggen sind die blauen Punkte (welche du dort mit abgeschnitten hast) auch in dem Linux-Define?

Es könnte zwar auch ein Bug im Delphi sein, aber das wäre Anderen doch auch aufgefallen? :gruebel:
Eigentlich sollten diese DEFINEs nur vom Compiler gesetzt werden, aber im Grunde kann die jeder beliebig ändern.

Delphi-Quellcode:
DEBUG;CONSOLE;MSWINDOWS;WIN32;WIN64;MACOS;MACOS32;IOS;ANDROID;LINUX;LINUX32;POSIX;POSIX32;EUREKALOG;EUREKALOG_VER6
in deine Projektoptionen oder als DEFINEs in alle deine Units und du kompilierst ein Programm, welches überall läuft. :stupid:

Helmi 15. Dez 2014 09:40

AW: unklare Definition von Compilerschalter
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ja - es liegt im Linux-Define (siehe Bild)

himitsu 15. Dez 2014 09:57

AW: unklare Definition von Compilerschalter
 
Mir fällt grade ein: Selbst wenn Linux irgendwo "ausversehn" mit gesetzt/definiert wird, dann müsste doch WIN32 dennoch/auch definiert sein. :gruebel:

.dproj löschen und neu erstellen lassen?
bzw. mal in der .dproj mal nach LINUX suchen. (im Notepad öffnen)

Helmi 15. Dez 2014 10:01

AW: unklare Definition von Compilerschalter
 
Zitat:

Zitat von himitsu (Beitrag 1283425)
Mir fällt grade ein: Selbst wenn Linux irgendwo "ausversehn" mit gesetzt/definiert wird, dann müsste doch WIN32 dennoch/auch definiert sein. :gruebel:

.dproj löschen und neu erstellen lassen?
bzw. mal in der .dproj mal nach LINUX suchen. (im Notepad öffnen)

hab ich gemacht - leider ohne Erfolg

Mavarik 15. Dez 2014 10:21

AW: unklare Definition von Compilerschalter
 
Bist Du sicher das der Code überhaupt compiliert wird?
Sieht mir eher danach aus als würde .pas nicht zu .dcu passen.
Schreib mal ein "!" in den Teil.

Mavarik

Helmi 15. Dez 2014 10:43

AW: unklare Definition von Compilerschalter
 
Zitat:

Zitat von Mavarik (Beitrag 1283429)
Bist Du sicher das der Code überhaupt compiliert wird?
Sieht mir eher danach aus als würde .pas nicht zu .dcu passen.
Schreib mal ein "!" in den Teil.

Ich hab jetzt mal den umgekehrten Weg gemacht und hab die .dcu-Datei gelöscht und
neu compilieren lassen.

Leider ohne Erfolg

Mavarik 15. Dez 2014 11:19

AW: unklare Definition von Compilerschalter
 
Zitat:

Zitat von Helmi (Beitrag 1283433)
Ich hab jetzt mal den umgekehrten Weg gemacht und hab die .dcu-Datei gelöscht und
neu compilieren lassen.

Leider ohne Erfolg

OK Dann mach es doch mal so wie ich vorgeschlagen habe...
Ob der Compiler überhaupt da an hält.

Helmi 15. Dez 2014 11:25

AW: unklare Definition von Compilerschalter
 
Zitat:

Zitat von Mavarik (Beitrag 1283436)
Zitat:

Zitat von Helmi (Beitrag 1283433)
Ich hab jetzt mal den umgekehrten Weg gemacht und hab die .dcu-Datei gelöscht und
neu compilieren lassen.

Leider ohne Erfolg

OK Dann mach es doch mal so wie ich vorgeschlagen habe...
Ob der Compiler überhaupt da an hält.

Hab ich auch gemacht - er mault dann sofort

Mavarik 15. Dez 2014 11:50

AW: unklare Definition von Compilerschalter
 
Zitat:

Zitat von Helmi (Beitrag 1283437)
Zitat:

Zitat von Mavarik (Beitrag 1283436)
Zitat:

Zitat von Helmi (Beitrag 1283433)
Ich hab jetzt mal den umgekehrten Weg gemacht und hab die .dcu-Datei gelöscht und
neu compilieren lassen.

Leider ohne Erfolg

OK Dann mach es doch mal so wie ich vorgeschlagen habe...
Ob der Compiler überhaupt da an hält.

Hab ich auch gemacht - er mault dann sofort

OK, "Er" compiliert also diesen Source-Code.. Fein, dann Grep mal LINUX kann ja überall noch im Source stehen inkl. *.inc

Helmi 15. Dez 2014 12:14

AW: unklare Definition von Compilerschalter
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich finde einfach einen LINUX-Schalter

ich hab mal die Komponente mit all ihren Dateien angehängt, vielleicht
findet jemand den Schalter

Stevie 15. Dez 2014 17:49

AW: unklare Definition von Compilerschalter
 
Also, ich habe:

.\DelphiComponent\Demo\Delphi\NoDaveDemo.dpr aufgemacht
den Dialog ob er die nicht gefundene TNoDave Komponente löschen soll mit "ignore" quittiert
Die main.pas geschlossen und alles verneint
Projektoptionen aufgemacht und folgendes geändert:
DCP Ausgabeverzeichnis geleert
bei Suchpfad eingetragen: ..\..;..\..\..\Pascal
kompiliert

Und mich gewundert, dass die Stoppunkte genauso komisch aussahen, wie auf deinem Screenshot.

Und dann hab ich den Author dieses Sources verflucht dafür, dass er die Datei mit Unix lineendings gespeichert hat, sie in Notepad++ geöffnet und sie in Windows Zeilenumbrüche konvertiert, erneut kompiliert und gefreut, dass nun alles in Butter is.

Helmi 15. Dez 2014 17:53

AW: unklare Definition von Compilerschalter
 
Zitat:

Zitat von Stevie (Beitrag 1283513)
Also, ich habe:

.\DelphiComponent\Demo\Delphi\NoDaveDemo.dpr aufgemacht
den Dialog ob er die nicht gefundene TNoDave Komponente löschen soll mit "ignore" quittiert
Die main.pas geschlossen und alles verneint
Projektoptionen aufgemacht und folgendes geändert:
DCP Ausgabeverzeichnis geleert
bei Suchpfad eingetragen: ..\..;..\..\..\Pascal
kompiliert

Und mich gewundert, dass die Stoppunkte genauso komisch aussahen, wie auf deinem Screenshot.

Und dann hab ich den Author dieses Sources verflucht dafür, dass er die Datei mit Unix lineendings gespeichert hat, sie in Notepad++ geöffnet und sie in Windows Zeilenumbrüche konvertiert, erneut kompiliert und gefreut, dass nun alles in Butter is.

welche Datei meinst du?
die noDave.pas?

und wie hast du das geändert?
(vielleicht kannst du mir ja die korrigierte Datei zuschicken)

[edit]
ich hab es jetzt auch in das Windows-Zeilumbruchsformat geändert und komme jetzt auch im Win32-Block raus

ich habe mir noch eine alte Version der Komponente angeschaut - dort ist es bereits im Windowsformat

Stevie 15. Dez 2014 18:23

AW: unklare Definition von Compilerschalter
 
Zitat:

Zitat von Helmi (Beitrag 1283514)
welche Datei meinst du?
die noDave.pas?

Japp, vermutlich sind andere auch noch betroffen.

Zitat:

Zitat von Helmi (Beitrag 1283514)
und wie hast du das geändert?

Notepad++ (oder vergleichbarer leistungsfähiger Texteditor, nein, nicht Notepad oder Wordpad! :mrgreen:)

Wennde das Castalia IDE Plugin nutzt, das hat ne Option um Zeilenumbrücke zu fixen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz