AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Nicht abgeschlossene bedingte Direktive

Ein Thema von Codehunter · begonnen am 18. Jan 2013 · letzter Beitrag vom 18. Jan 2013
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Nicht abgeschlossene bedingte Direktive

  Alt 18. Jan 2013, 13:59
Delphi-Version: 7
Hallo!

Mein D7-Compiler gibt mir grad ein bisschen Rätsel auf. Hier erstmal der Code:
Delphi-Quellcode:
function dwVMWareIsPresent: Boolean;
begin
 Result := False;
{$IFDEF CPU386}
 try
  asm
      mov eax, 564D5868h
      mov dx, 5658h
      mov ecx, 0000000Ah
      xor ebx, ebx
      in eax, dx
      cmp ebx, 564D5868h
      jne @@exit
      mov Result, True
  @@exit:
  end;
 except
  Result := False;
 end;
{$ENDIF}
end;
Beim {$IFDEF CPU386} wirft der Compiler die besagte Meldung als Fehler aus und hält an. Aber auch nur bei einem STRG-F9-Durchlauf. Bei einem darauf folgenden F9 compiliert er sauber durch. Wo ist da jetzt der Denkfehler? Die übliche Medizin, also erstmal alle DCUs löschen und komplett neu erzeugen lassen hilft nicht.

Grüße
Cody
  Mit Zitat antworten Zitat
MeierZwoo

Registriert seit: 3. Dez 2012
106 Beiträge
 
#2

AW: Nicht abgeschlossene bedingte Direktive

  Alt 18. Jan 2013, 15:20
Also ich bin der Meinung, daß, wenn diese function nicht im Hauptprogramm (dpr) steht, bei F9 = run keine Quellcode-Änderungen der Units berücksichtigt werden - also die letzte Änderung garnicht berücksichtigt wird - deshalb bei F09 = run kein Meckern.

Zum anderen wird der Fehler oberhalb der angemeckerten Stelle sein und erst beim erneuten {$IFDEF CPU386} wird gemeckert, weil oben noch nicht abgeschlossen wurde.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Nicht abgeschlossene bedingte Direktive

  Alt 18. Jan 2013, 17:26
Zum anderen wird der Fehler oberhalb der angemeckerten Stelle sein und erst beim erneuten {$IFDEF CPU386} wird gemeckert, weil oben noch nicht abgeschlossen wurde.
Das muss ich morgen mal prüfen, daran hab ich nicht gedacht. Aber ich glaube, D7 kann doch verschachtelte $IFDEFs oder?
  Mit Zitat antworten Zitat
MeierZwoo

Registriert seit: 3. Dez 2012
106 Beiträge
 
#4

AW: Nicht abgeschlossene bedingte Direktive

  Alt 18. Jan 2013, 17:45
Ich meinte mit "oben", wenn oben schon einmal dieselbe {$IFDEF CPU386} begonnen wurde - was der Compiler meckert, wenn in einer {$IFDEF CPU386} noch eine {$IFDEF CPU386} auftaucht:

{$IFDEF CPU386}
// ..
{$IFDEF CPU386}
// ..
{$ENDIF}
// ..
{$ENDIF}

Meckert mein D9 nicht an. Gedankenfehler meinerseits.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz