//--------------------------------------------------------------------------- // Operaciones previas y llamada a la función de descarga //--------------------------------------------------------------------------- void __fastcall TMainForm::b_descargarClick(TObject *Sender) { DWORD bytes; AnsiString url("http://" + cb_url->Text); AnsiString destino(IncludeTrailingBackslash(m_opciones.m_destino)); // buscar la extensión. La función ExtractFileExt también nos sirve para Urls, porque // lo único que hace el buscar el punto comenzando por el final. destino += "datos" + ExtractFileExt(cb_url->Text); Screen->Cursor = crHourGlass; e_localizacion->Text = "Descargando..."; e_asociado->Text = e_localizacion->Text; b_abrir->Enabled = false; ts_archivo->Repaint(); __try { lb_log->Items->Clear(); lb_log->Repaint(); bytes = Descargar(url.c_str(), destino.c_str(), &m_opciones, &DescargaCallback); } __finally { Screen->Cursor = crDefault; if ( DWORD(-1) == bytes ) { e_localizacion->Text = ""; e_asociado->Text = ""; lb_log->ItemIndex = MainForm->lb_log->Items->Add("Se ha producido un error descargando el recurso."); } else { char buff[256]; FindExecutable(destino.c_str(), NULL, buff); e_localizacion->Text = destino; e_asociado->Text = buff; b_abrir->Enabled = true; m_vista->Lines->Clear(); lb_log->ItemIndex = MainForm->lb_log->Items->Add("El recurso ha sido descargado en " + destino + ". Tamaño total: " + IntToStr(bytes) + " bytes."); } } }
int nuevareserva(Registro &NuevoReg, CListaTfnos &Trabajo, Registro ®) { int distancia, coste, diasemana, // Declaracion de variables locales coste_total, oferta, recargo; destino(NuevoReg, Trabajo); // Llamada a funciones y asignacion de //valores de distintas variables distancia = NuevoReg.leedistancia(); //lee la distancia para luego //utilizarlo en el precio coste = precio(distancia, NuevoReg); cuando(NuevoReg); diasemana = NuevoReg.unafecha.leediasemana(); recargo = aumento(diasemana, coste); oferta = descuento(coste, distancia, NuevoReg); coste_total = coste + oferta + recargo; if (NuevoReg.leevuelta()==true) coste_total = coste_total * 2; NuevoReg.precio=coste_total; guardareserva(NuevoReg, reg, Trabajo); //guarda la reserva hecha a //petición del usuario return 0; }