C++ / Anwendung nach kompilieren alte Verhaltensmuster

PEASANT KING

Commander
Registriert
Okt. 2008
Beiträge
2.412
Guten Tag,

ganz kurz ich habe eine uralte C++ Anwendung aus dem Jahre 2007. Hier musste ich auf Kundenwunsch etwas umprogrammieren und
dabei habe ich auch einen SQL Statement umgeschrieben. Danach habe ich das Ganze kompiliert.

Beim Ausführen der neu kompilierten Anwendung wird allerdings immer noch der alte SQL Befehl ausgeführt.
Woran kann das liegen? Das Phänomen ist mir noch nie unter gekommen und ja ich habe natürlich die alte EXE mit der neu kompilierten ausgetauscht :D.

Was könnte hier der Grund sein?
 
Sicher dass der neue Stand kompiliert wurde? Tools wie "make" prüfen z.B. das Datum der letzten Änderung der Datein und kompiliert diese nur, wenn sie sich seit dem letztem Aufruf geändert haben. Um sicher zu gehen könntest du zunächst "make clean" aufrufen bzw. den Build-Ordner löschen um alles komplett neu zu kompilieren.
 
Ich nutze Visual Studio 2019, das Projekt wurde schon mehrmals bereinigt. Ich finde zum verrecken nicht den Fehler.
 
Führst du den Debug oder der Release build aus?
Hast du das File ausgecheckt?
Guck mal im Build log wo die Executable hin kopiert wird.
 
Ich habe beides ausgeführt. Anfangs nur Debug.

Die jeweilige EXE landet genau da wo angeben. Datum und Uhrzeit sind korrekt mit dem Kompilierdatum.
Mit ausgecheckt meinst du eine Codeverwaltung wie git, wenn ja es gab bis jetzt kein Repository für die Anwendung.
 
Kannst du das Projekt aus dem Studio starten?
Kannst du im Programm mit dem Debugger durchsteppen?
 
Ich kann das Projekt aus dem Studio starten, die Anwendung selber ist eine Schnittstelle die Dachser RUCK*.txt
einliest in Tabellen einer Warenwirtschaft und aus diesen Daten werden dann automatisiert aus der Wawi heraus Rechnungen erzeugt.

Aus VS hat die Anwendung nur keine Funktion ohne verbund mit der Warenwirtschaft.

Die Anwendung funktioniert und Belege werden erzeugt, ich habe nur ein Tabellenfeld geändert so dass ein Datumswert nicht mehr in Feld A abgelegt wird sondern in Feld B grob erklärt.

Im Profiler / Management Studio wird allerdings immer noch der alte Statement angezeigt und es wird auch mein neues Feld nicht befüllt nur das alte.
 
PEASANT KING schrieb:
Die Anwendung funktioniert und Belege werden erzeugt, ich habe nur ein Tabellenfeld geändert so dass ein Datumswert nicht mehr in Feld A abgelegt wird sondern in Feld B grob erklärt.

Im Profiler / Management Studio wird allerdings immer noch der alte Statement angezeigt und es wird auch mein neues Feld nicht befüllt nur das alte.

Kannst du ein Breakpoint da setzen wo das alte Statement gesetzt wird?
Profiler / Management Studio? Meinst du das SQL managment studio?
 
Jep ich meine das SQL Management Studio. Ich schaue nachher mal.
 
Mir fällt eigentlich nur eine Erklärung ein: Dein neuer Code wird nicht ausgeführt. Das kann mehrere Gründe haben:
  • Neuer Code kompiliert nicht und es liegt im Build-Ordner noch die alte Executable rum (hast du ausgeschlossen)
  • Die Stelle, die du geändert hast, ist nicht verantwortlich für die Ausgabe. (Das kannst du nun rausfinden über Print-Satements oder wie @herliTz_234 geschrieben hast, Breakpoints.)
 
  • Gefällt mir
Reaktionen: herliTz_234
Naja ich programmiere nicht seit gestern. Ich bin die Optionen alle durch gegangen.

Es gibt nur diese eine Stelle an der überhaupt zwei SQL Statements vorhanden sind.
Ich schau mir das hier noch mal genauer an. Vielleicht passiert das Problem auch beim Kopieren der Exe über das Netzwerk in eine virtuelle Maschine.

Kann es sein das es daran liegt, weil die Anwendung als OLE Server registriert wird?
Ich kenn mich leider kaum mit OLE aus.

Nachtrag:

Ich habe die Anwendung mit IDA Free dekompiliert und sehe sogar meinen SQL Statement in der Anwendung,
also daran liegt es wohl nicht, ich weiß nur nicht wo ich noch nach forschen soll...

Nachtrag 2:

Die Exe war mittels "Regserver" registriert und lag noch in einem völlig anderem Verzeichnis.
Daher wurde meine neue Exe nicht genommen.

Problem ist erledigt.
 
Zuletzt bearbeitet:
Zurück
Oben