Datumsproblem
-
Hallo Leutz ich habe wirklich ein simples Programm geschrieben, aber das geht nicht. Hier ist mal der komplette Quellcode:
#pragma hdrstop #include <iostream> #include <conio> #include <SysUtils.hpp> using namespace std; //--------------------------------------------------------------------------- #pragma argsused void main() { cout << Date << endl; getch(); }
Das soll ein Konsolenprogramm werden. Beim Compilieren bekomme ich auch keine Fehler, aber wenn ich es ausführen will, bekomme ich einen Linker-Fehler. Der sieht wie folgt aus:
[Linker Fehler] Unresolved external '__fastcall Sysutils::Date()' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\ALL USERS\DESKTOP\PRO\PROJEKT-DAT\BACKUP\BACKUP.OBJ
Warum bekomme ich diesen Fehler???
MfG
Muecke
-
Hast du es mal mit
Date()
versucht?
-
ja scheint er wohl:
Muecke schrieb:
[Linker Fehler] Unresolved external '__fastcall [b]Sysutils::Date()[/b]' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\ALL USERS\DESKTOP\PRO\PROJEKT-DAT\BACKUP\BACKUP.OBJ
bin mir nur nich sicher ob man Date()n einfach so ausgeben kann....
-
Im Code steht Date ohne () !!!
Wenn nicht, dann haltDateToString(Date());
. Auf jeden Fall fehlen die Klammern. PS: Noch mal nachgeschaut: Die BCB-Hilfe scheint da einen Fehler zu haben - im Beispiel wir auch nur Date ohne Klammern geschrieben. (Ich hasse die BCB-Hilfe).
-
vielleicht hat ers nur hier im code vergessen!
Also bei mir in hilfe steht es irgendwie mit klammern!
nit SysUtils Kategorie Datum und Uhrzeit extern PACKAGE System::TDateTime__fastcall Date[b](void)[/b];
void __fastcall TForm1::Button1Click(TObject *Sender) { Label1->Caption = DateToStr(Date[b]()[/b]); }
-
???? Also ich schwöre, dass bei meiner Version (6 Pro) im Beispiel
procedure TForm1.Button1Click(Sender: TObject) begin Label1.Caption := 'Heute ist der ' + DateToStr(Date); end
steht.
-
OK. Das mit den Klammern stimmt.
Stoße jetzt aber auf mein nächstes Problem.Ich möchte mit der Funktion "system()" arbeiten und möchte den "command" vorher in einer Variable speichern.
Mein Quellcode sieht wie folgt aus:AnsiString datum; char *cdatum, *command; command = (char*)malloc(100 * sizeof(char)); cdatum = (char*)malloc(10 * sizeof(char)); datum = DateToStr(Date()); cdatum = datum.c_str(); CreateDir("D:\\Backup"); CreateDir("D:\\Backup\\" + datum); command = "copy C:\\lagerverwaltung.mdb D:\\Backup\\" + *cdatum; cout << command; getch(); // system(command); }
Aber wenn ich mir die Variable command ausgeben lasse, steht dort nichts drin. Warum?
MfG
Muecke
-
Hallo
die Zusammenstellung des Strings solltes du mit strcat() machen, wenn du nicht AnsiString oder string benutzen willst
bis bald
akari
-
OK.
Danke für die superschnelle Hilfe...
-
Hallo,
Bitte Muecke, lies dir ein C++-Tutorial durch. Dein Code steckt so voller Fehler, dass man garnicht weiß wo man anfangen soll. Ich kommentiere mal ein paar.
AnsiString datum; char *cdatum, *command; command = (char*)malloc(100 * sizeof(char)); // Warum malloc und nicht new cdatum = (char*)malloc(10 * sizeof(char)); // das Gleiche datum = DateToStr(Date()); cdatum = datum.c_str(); // Hier überschreibst du deinen vorher erzeugten Pointer und erzeugst ein Speicherleck CreateDir("D:\\Backup"); CreateDir("D:\\Backup\\" + datum); // Hier kommt das zweite Speicherleck, warum dereferenzierst du den Pointer // man kann so nicht einfach chararrays addieren dazu strcat (siehe akaris Post) command = "copy C:\\lagerverwaltung.mdb D:\\Backup\\" + *cdatum; cout << command; getch(); // system(command); // Wo wird der oben allozierte Speicherplatz freigegeben }
Bitt verwende lieber ausschliesslich AnsiStrings und keine chararrays, da du offensichtlich nicht weißt wie man mit denen umgeht.
Ciao