Transfer Status ...
-
Ja, genau sowas meine ich.
So wie das halt überall ist...
-
Hol doch einfach vor dem Transfer die Größe der Datei und vergleiche es mit der Größe der empfangenen Daten! Dann kannst du dir den Prozentsatz ja leicht selbst ausrechnen!
-
Gute Idee !
Dann müsste ich noch einen Timer einbauen...
Weißt du denn den 'Befehl' zum auslesen der Dateigröße ? (musst jetzt nicht nachgucken)Thx
-
CFile::GetLength()
-
Ok, Thx a lot.
Ich probiers morgen mal aus ....
Jetzt lern ich erst mal Franz.. *kotz*
-
Ich hab jetzt folgendes beim entgegennehmen der Datei ...
if(m_bReceive == FALSE) //m_dataLength wurde noch nicht empfangen { m_sFile.Receive(&m_dataLength, 4); m_received=0; m_bReceive = TRUE; byte *m_data = new byte[m_dataLength]; } int iLen; iLen=m_sFile.Receive(m_data+m_received, m_dataLength-m_received); if(iLen>0) { m_received = m_received + iLen; } int iState = m_received/m_dataLength*100*; // Hier ist das Problem ! m_pState.SetPos(iState); //Dateiende erreicht? if(m_received==m_dataLength) { CFile destFile(m_strDatei, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary); destFile.Write(m_data, m_dataLength); // Write it destFile.Close(); delete m_data; m_sFile.Close(); GetDlgItem(IDC_BCLOSE)->EnableWindow(TRUE); GetDlgItem(IDC_BCANCEL)->EnableWindow(FALSE); //Statusmeldung m_strStatus= "Transfer beendet."; UpdateData(FALSE); }
Frage: Warum bekomme ich da so gr0ße Zahlen raus ?
Und wie bekomm ich da % raus ?Thx
-
Dreisatz
m_received*100/m_dataLength
PS: Das **byte *** in der if-Abfrage bei m_data muss da raus. Du definierst hier eine neue lokale Variable, sprichst aber weiter unten die Membervariable Deiner Klasse an.
-
Das byte* is da schon längst raus ...
Wollte es nur nicht nochmal neu schreiben ...Ich finde es aber trotzdem seltsam das m_received*100/m_dataLength != m_received/m_dataLength*100 ...
Naja jetzt funzt es jedenfalls ...
Nochmals danke!
-
Hmmmm,
wie ginge das ganze jetzt auf der Server Seite ?m_sFile.Accept(m_sFileAccept); CFile myFile; myFile.Open(m_strDatei, CFile::modeRead | CFile::typeBinary); // Länge senden int myFileLength = myFile.GetLength(); m_sFileAccept.Send(&myFileLength, 4); byte* data = new byte[myFileLength]; // Inhalt senden myFile.Read(data, myFileLength); m_sFileAccept.Send(data, myFileLength); myFile.Close(); delete data; m_sFile.Close(); m_sFileAccept.Close();
Hier sendet der Server ja die Datei in einem durch ...
Ich hab echt kein Plan ....plz help
-
Das ist mit Deinem Ansatz auf der Serverseite nicht möglich.
-
Ich bin für jeden anderen Ansatz dankbar ...