[Linker Fataler Fehler] Fatal: Unable to open file 'DCLUSR50.BPI'
-
Hi,
das geht ja schnell. Leere Form läst sich Compilieren und das Programm sieht so aus://--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; HANDLE m_hcom=INVALID_HANDLE_VALUE; // Handle für die serielle Schnittstelle COMMCONFIG cc; // Struktur zum lesen/schreiben der COMM Konfiguration //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { // COM1 oeffnen / schliessen if (m_hcom == INVALID_HANDLE_VALUE) // ist COM1 inaktiv? { m_hcom = CreateFile ( "COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if (m_hcom == INVALID_HANDLE_VALUE) Label2->Caption="COM1 konnte nicht geöffnet werden!"; } else // COM1 wieder schliessen { CloseHandle(m_hcom); m_hcom = INVALID_HANDLE_VALUE; } // Ausgabe des Status von COM1 if (m_hcom != INVALID_HANDLE_VALUE) { Label1->Caption="COM1 aktiv"; Label1->Color=clGreen; Button1->Caption="deaktivieren"; } else { Label1->Caption="COM1 inaktiv"; Label1->Color=clRed; Button1->Caption="aktivieren"; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { // Timeout Werte setzen, damit ReadFile nicht ewig wartet COMMTIMEOUTS CommTO; CommTO.WriteTotalTimeoutMultiplier=100; // max 100 ms für ein Zeichen CommTO.WriteTotalTimeoutConstant=2000; // max 2s für alles SetCommTimeouts(m_hcom,&CommTO); // Einen String über die serielle Schnittstelle senden char Data[80]; DWORD BytesWritten; strcpy(Data,Edit1->Text.c_str()); WriteFile(m_hcom,&Data,strlen(Data),&BytesWritten,NULL); Label2->Caption=(AnsiString(BytesWritten)+" Bytes gesendet"); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { // Mode COM1:1200,E,8,1 emulieren DCB dcb; char ModeString[]="baud=1200 parity=E data=8 stop=1"; if (BuildCommDCB(ModeString,&dcb)) { SetCommState(m_hcom,&dcb); Label2->Caption="mode COM1: 1200,E,8,1 emuliert"; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { // Timeout Werte setzen, damit ReadFile nicht ewig wartet COMMTIMEOUTS CommTO; CommTO.ReadIntervalTimeout=100; // max 100 ms warten auf ein Zeichen CommTO.ReadTotalTimeoutMultiplier=100; // max 100 ms für jedes Zeichen CommTO.ReadTotalTimeoutConstant=2000; // max 2s auf Daten warten SetCommTimeouts(m_hcom,&CommTO); // String empfangen, max 20 Zeichen char Data[20]="Leer"; DWORD BytesRead; if (ReadFile(m_hcom,&Data,20,&BytesRead,NULL)) { if (BytesRead>0)Label4->Caption=Data; else Label4->Caption="Timeout"; } else Label4->Caption="Fehler"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { // ist ein COMM-Port aktiv? if (m_hcom!=INVALID_HANDLE_VALUE) { DWORD Status=0; // Register fuer Status der Control Leitungen if (CheckBoxKontrol->Enabled==true) // RTS, DTR, BRK steuerbar? { if (CheckBoxRTS->Checked==true) EscapeCommFunction(m_hcom,SETRTS); if (CheckBoxRTS->Checked==false) EscapeCommFunction(m_hcom,CLRRTS); if (CheckBoxDTR->Checked==true) EscapeCommFunction(m_hcom,SETDTR); if (CheckBoxDTR->Checked==false) EscapeCommFunction(m_hcom,CLRDTR); if (CheckBoxBRK->Checked==true) EscapeCommFunction(m_hcom,SETBREAK); if (CheckBoxBRK->Checked==false) EscapeCommFunction(m_hcom,CLRBREAK); } // Zustand der Leitungen CTS, DSR und DCD auslesen GetCommModemStatus(m_hcom,&Status); // CheckBoxen neu setzen if (Status & MS_CTS_ON) CheckBoxCTS->Checked=false; else CheckBoxCTS->Checked=true; if (Status & MS_DSR_ON) CheckBoxDSR->Checked=false; else CheckBoxDSR->Checked=true; if (Status & 128) // MS_DCD_ON gibts nicht CheckBoxDCD->Checked=false; else CheckBoxDCD->Checked=true; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { DWORD Size=0; // Groesse der COMMCONFIG Struktur // Konfiguration auslesen GetCommConfig(m_hcom,&cc,&Size); // Dialog zur Konfiguration verwenden CommConfigDialog("com1",NULL,&cc); // Konfiguration aktualisieren SetCommConfig(m_hcom,&cc,Size); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button6Click(TObject *Sender) { if(PurgeComm(m_hcom,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR)) Label2->Caption="COM1 zurückgesetzt"; else Label2->Caption="Fehler!"; } //--------------------------------------------------------------------------- void __fastcall TForm1::CheckBoxKontrolClick(TObject *Sender) { if (CheckBoxKontrol->Checked==true) { CheckBoxRTS->Enabled=true; CheckBoxDTR->Enabled=true; CheckBoxBRK->Enabled=true; } else { CheckBoxRTS->Enabled=false; CheckBoxDTR->Enabled=false; CheckBoxBRK->Enabled=false; } } //---------------------------------------------------------------------------
Gruß
Kohlibitte CodeTags verwenden
Ok, werde ich machen.
-
DCLUSR50.BPI deutet auf eine Version 5 hin. Hast du das Projekt mit einer anderen Version geöffnet ?
-
Die Version die ich habe ist eine 5.0 (Build 12.34) Update Pack 1
-
gibt es die Datei auf deinem rechner ?
ist der Pfad auf dieses Datei unter Projekt/Optionen/Pfade eingetragen ?
-
Habe die Datei schon gesucht. Ist auch nicht auf meinem Rechner.
-
hört sich nicht gut an.
suche dclusr50.bpk, öffne di im BCB und gehe auf Projekt/neu erstellen.
wenn die auch nicht da ist, öffne die *.bpr- Datei deines Projektes mit nem Editor und entferne alle Einträge 'DCLUSR50.BPI'.
Wenn dein Projekt die Inahlte verwendet hasste allerdings ein Problem. Ansonsten ist dann ok.
-
Variante 1)
Projekt schliessen, ggf. BCB beenden, alle temporären Dateien im Projektverzeichnis löschen.
Also alles ausser *.h, *.cpp, *.bpr, *.dfm
Dann BCB und Projekt neu laden.Variante 2)
Projekt und ggf. BCB schliessen. Die *.bpr-Datei im Texteditor öffnen und alle Verweise auf besagte Datei löschen (vorher Backup anlegen).
Dann BCB und Projekt neu laden.Variante 3)
Ein neues Projekt anlegen und den Code rüberkopieren.
-
wir sollten ncht so viel gleichzeitg arbeiten *G*
/me geht dann mal ins .NET
-
Jupp das war es. *.bpr geöffnet Editiert -> Compiliert = rennt :-))
Vielen Dank, geiles Board. Ab in die Falle.
Gruß
Kohli
-
install dclusr50 pacekage in C:\Program Files\Borland\CBuilder5\Lib