Exemplo n.º 1
0
void Dialog2() {
	// Testkonto Commerzbank - Einzel�berweisung
	cout << "\nTestkonto Commerzbank : Einzel�berweisung";
	cout << "\nsenden :"; FLUSH;
	Senden((PSZ)SENDEUEBERW);				 	// BTX-Talk
ofstream	datei(DATEINAME);
	if (datei) {
		// Formular-Seite Erfassung Einzel-�berweisung

		// BLZ ist vorgegeben
		// Institut wird automatisch eingef�gt
		Senden((PSZ)"123456#^Otto Schubert#^100#^25^");
		Senden((PSZ)"Rnr.: 123/95#^vom : 12.01.95#^#^");
		// Anzeige zur Pr�fung
		Senden((PSZ)"#^");
		// Best�tigung mit TAN und PIN
		Senden((PSZ)"123456^98765^#^");
		cout << "\nSeiteninhalt einlesen\n"; FLUSH;
		Meldung(DxjReadText(0, 0, 39, 23, (PSZ)seite, sizeof(seite)));
		datei << seite << LF;

		// 9 senden Ende   # weitere �berweisungen
		Senden((PSZ)"9^*9#");

		datei.flush();
		datei.close();
	}
}
Exemplo n.º 2
0
Arquivo: A1.cpp Projeto: nMerlin/CP
//Zustandsvektor in Datei schreiben
void SchreibeZustand(Eigen::VectorXcd xi, std::string name) {
	int n_max = xi.size();
	std::ofstream datei(name + ".dat");
	for (int i = 0; i < n_max; i++) {
		datei << (i - floor(n_max/2)) << " " << abs(xi(i))*abs(xi(i)) << std::endl;	
	}
	datei.close();
}
Exemplo n.º 3
0
//Plottet die gegebene Funktion (3D-Plot, symmetrisch in x und y)
std::string plot3d(std::function<double(double,double)> function, std::string pfad, std::string name, double schritte, double start, double stop) {
	//***Variablen und Konstanten***
	double h = (stop - start)/schritte;
	
	//Dateinamen und Titel im Plot
	std::string gp_skript = "skript.plt";
	std::string gp_title = name;
	std::string name_plot = name;

	//***Dateistreams öffnen***
	std::ofstream datei((pfad + name + ".dat").c_str()); //*.c_str() wandelt einen String in einen char-String um
	
	//***Gnuplot-Skript***
	std::ofstream skript((pfad + gp_skript).c_str());
	skript << "set terminal pdf" << std::endl;
	skript << "set output '" + pfad + name_plot + ".pdf'" << std::endl;
	skript << "set xrange [" << start << ":" << stop << "]" << std::endl;
	skript << "set yrange [" << start << ":" << stop << "]" << std::endl;
	//skript << "set xlabel 'Theta_0 [rad]'" << std::endl;
	//skript << "set ylabel 'Energie [willk. Einh.]'" << std::endl;
	skript << "splot '" + pfad + name_plot + ".dat' with lines" + " title '" +  gp_title + "'" << std::endl;
	
	static int s = schritte;
	
	//Daten in die Gnuplot-Datenquelle einfüllen
	//Dateibefehle außerhalb der Schleifen
	//pragma liefert unsortierte Datenpunkte in der Datei
	//#pragma omp parallel for
	for (int j = 0; j < s; j++) {
		double y = start + j*h;
		
		for (int i = 0; i < s; i++) {
			
			double x = start + i*h;
			double z = function(x,y);
			
			//Daten in Datei schreiben
			datei
			<< x
			<< " "
			<< y
			<< " "
			<< z
			<< std::endl;
			
		}
	}
	
	//Damit Gnuplot arbeiten kann, müssen die Streams erst geschlossen werden
	datei.close();
	skript.close();
	
	//Aufruf von Gnuplot und Übergabe des soeben erstellten Skriptes, welches drei Plots erstellt
	system(("gnuplot '" + pfad + gp_skript + "'").c_str());
	
	return pfad;
}
Exemplo n.º 4
0
Arquivo: A2.cpp Projeto: nMerlin/CP
//Daten in eine Datei schreiben
void SchreibeDatenFkt(std::function<double(double)> f, double min, double max, double h, std::string name) {
	int nmax = ceil((max-min)/h);
	double x = min;
	std::ofstream datei(name+".dat");
	for (int i = 0; i < nmax; i++) {
		datei << x << " " << f(x) << std::endl;
		x += h;
	}
	datei.close();
}
Exemplo n.º 5
0
Arquivo: A1.cpp Projeto: nMerlin/CP
//Main-Function
int main () {
	double xiMax = 10;
	double xiMin = -10;
	double deltaXi = 0.1;
	double deltaT = 0.05;
	double mittelWert = 0, mittelWert2 = 0;
	double impuls = 0, impuls2 = 0;
	int cn = floor(10./deltaT+0.5);
	int iN = 0;
	std::complex<double> c_i = (0,1);
	
	Eigen::MatrixXcd Sh = S_H(deltaT, &H, deltaXi, xiMax, xiMin);
	Eigen::VectorXcd xi = init(xiMax, xiMin, deltaXi);
	Eigen::VectorXcd xi_n = xi;
	Eigen::VectorXcd xi_temp;
	
	//Dateistreams für geforderte Ausgabe-Plots
	std::ofstream datei("A1d_Normierung.dat");
	std::ofstream datei2("A1f.dat");
	
	//Anwenden des Zeitentwicklungsoperators bis t=10
	for (int i = 0; i < cn; i++) {
		xi_n = Sh*xi_n;
		datei << i*deltaT << " " << Norm(xi_n) << std::endl;
		
		//Animationssequenz
		//if (i%2 == 0) {
		//	SchreibeZustand(xi_n, "A1d_Animation_"+convertInt(i/2));
		//}
		
		//Mittelwert des Ortes und des Impulses
		for (int j = 0; j < xi.size(); j++) {
			iN = j - floor(xi.size()/2);
			mittelWert += iN*deltaXi*abs(xi_n(j))*abs(xi_n(j));
			mittelWert2 += (iN*deltaXi)*(iN*deltaXi)*abs(xi_n(j))*abs(xi_n(j));
			impuls += abs(xi_n(j)*(-c_i)*Ableitung(xi_n, j, deltaXi));
			impuls2 += abs(xi_n(j)*(-1.)*Ableitung2(xi_n, j, deltaXi));
		}
		datei2 << i*deltaT << " " << mittelWert << " " << (mittelWert2 - mittelWert*mittelWert) << " " << impuls << " " << impuls2 << std::endl;
		mittelWert = 0;
		mittelWert2 = 0;
		impuls = 0;
		impuls2 = 0;
	}
	
	datei.close();
	datei2.close();
	
	SchreibeZustand(xi_n, "A1d_Zustand");
	
	return 0;	
}
Exemplo n.º 6
0
void Hauptmenue::on_tbl_Transaktionen_activated(const QModelIndex &index)
{
    // Test ************************************************************
    int s;
    int row ,column;
    int zeilen =table->rowCount();
    int spalten= table->columnCount();
    int pos1,pos2,lastpos;
    QString line;
    QString eintrag[99][99];

    QString verzeichnis=QCoreApplication::applicationDirPath();
    verzeichnis.append("/data.txt");

    QFile datei(verzeichnis);
    if (datei.open(QIODevice::ReadOnly | QIODevice::Text)){
        QApplication::setOverrideCursor(Qt::WaitCursor);

        QTextStream in(&datei);
        while(!in.atEnd()){
            line = in.readLine();
            s=0;
            pos1=0;
            lastpos=0;
            while(pos1!=-1){
                pos1=line.indexOf("\"",lastpos);
                lastpos=pos1+1;
                pos2=line.indexOf("\"",lastpos);
                lastpos=pos2+1;
                if(pos1!=-1){
                    eintrag[zeilen][s]=line.mid((pos1+1),(pos2-pos1-1));
                    s++;
                }
            }
        }
    }
    //datei.close();

    for(row=0;row<zeilen;row++){
        for(column=0;column<spalten;column++){
            QTableWidgetItem *newItem = new QTableWidgetItem;
            newItem->setText(eintrag[row][column]);

            table->setItem(row, column, newItem);
        }
    }
    // Test ************************************************************

}
Exemplo n.º 7
0
//Erstellt alle Plots (Energie, Drehmoment als Ableitung, Drehmoment klassisch), später vielleicht in eine vernünftige Klasse umschreiben, da die Funktionalität garantiert wiederverwendet wird
std::string plot(std::function<double(double)> function, std::string pfad, std::string name, double schritte, double start, double stop) {
	
	//***Variablen und Konstanten***
	double h = (stop - start)/schritte;
	double x = start;
	
	//Dateinamen und Titel im Plot
	std::string gp_skript = "skript.plt";
	std::string gp_title = name;
	std::string name_plot = name;

	//***Dateistreams öffnen***
	std::ofstream datei((pfad + name + ".dat").c_str()); //*.c_str() wandelt einen String in einen char-String um
	//ableitung << beschriftung << std::endl;	//Titelzeile
	
	//***Gnuplot-Skript***
	std::ofstream skript((pfad + gp_skript).c_str());
	skript << "set terminal pdf" << std::endl;
	skript << "set output '" + pfad + name_plot + ".pdf'" << std::endl;
	skript << "set xrange [" << start << ":" << stop << "]" << std::endl;
	//skript << "set xlabel 'Theta_0 [rad]'" << std::endl;
	//skript << "set ylabel 'Energie [willk. Einh.]'" << std::endl;
	skript << "plot '" + pfad + name_plot + ".dat' with lines" + " title '" +  gp_title + "'" << std::endl;

	//Daten in die Gnuplot-Datenquelle einfüllen
	
	for (int i = 0; i < schritte; i++) {
		
		double y = function(x);
		
		//Daten in Datei schreiben
		datei
		<< x
		<< " "
		<< y
		<< std::endl;
		
		x += h;
	}
	
	//Damit Gnuplot arbeiten kann, müssen die Streams erst geschlossen werden
	datei.close();
	skript.close();
	
	//Aufruf von Gnuplot und Übergabe des soeben erstellten Skriptes, welches drei Plots erstellt
	system(("gnuplot '" + pfad + gp_skript + "'").c_str());
	
	return pfad;
}
Exemplo n.º 8
0
void Dialog1() {
	// Testkonto Commerzbank - Auszug lesen
	cout << "\nTestkonto Commerzbank aufrufen";
	cout << "\nsenden :"; FLUSH;
	Senden((PSZ)SENDEAUSZUG);				 	// BTX-Talk
ofstream	datei(DATEINAME);
	if (datei) {
		cout << "\nSeite einlesen\n"; FLUSH;	// Seite lesen
		Meldung(DxjReadText(0, 0, 39, 24,
					(PSZ)seite, sizeof(seite)));
		datei << seite << LF;   				// Seite speichern
		datei.flush();
		datei.close();
	}
}
Exemplo n.º 9
0
void plotter::writedaten_()
{
    double xwert = xmin_;
    double ywert;
    std::ofstream datei((pfad_ + name_ + ".dat").c_str());
    
    for (int i = 0; i < schritte_; i++)
    {  
	ywert = function_(xwert);
	datei << xwert << " " << ywert << std::endl;
	
	xwert += schrittweite_;
    }
    
    datei.close();
}
Exemplo n.º 10
0
Arquivo: A2.cpp Projeto: nMerlin/CP
int main() {
	//Parameter
	const double r_inf = 3.57;				//Obergrenze für r
	const double h_a = pow(10,-4);			//Schrittweite im Aufgabenteil a.)
	const double epsilon = pow(10,-13);		//Genauigkeitsziel bei der Nullstellensuche
	
	//Variablen
	std::vector<schranke> schranken;
	std::vector<double> R;					//Speichert Nullstellen von g3
	double delta;							//Feigenbaum-Konstante
	schranke s;
	
	//Aufgabenteil a.)
	SchreibeDatenFkt(std::bind(&Gn,0,std::placeholders::_1),0,r_inf,h_a,"A2a_n0");
	SchreibeDatenFkt(std::bind(&Gn,1,std::placeholders::_1),0,r_inf,h_a,"A2a_n1");
	SchreibeDatenFkt(std::bind(&Gn,2,std::placeholders::_1),0,r_inf,h_a,"A2a_n2");
	SchreibeDatenFkt(std::bind(&Gn,3,std::placeholders::_1),0,r_inf,h_a,"A2a_n3");
	
	//Abgelesene Schranken für die Nullstellen
	s.min = 1.95; s.max = 2.1; schranken.push_back(s);
	s.min = 3.1; s.max = 3.3; schranken.push_back(s);
	s.min = 3.45; s.max = 3.55; schranken.push_back(s);
	s.min = 3.55; s.max = 3.7; schranken.push_back(s);
	
	//Nullstellen bestimmen und ausgeben
	std::ofstream datei("Nullstellen.dat");
	datei << "#n R1 R2 R3" << std::endl;
	datei.precision(std::numeric_limits<double>::digits10);
	for (int n = 1; n < 4; n++) {
		datei << n << " ";
		for (int i = 0; i < (n+1); i++)	{
			double nst = Intervallhalbierung(schranken[i], epsilon, n).min;
			datei << nst << " ";
			if (n==3) {
				R.push_back(nst);	
			}
		}
		datei << std::endl;
	}
	
	//Schätzung für die Feigenbaum-Konstante
	delta = (R[2]-R[1])/(R[3]-R[2]);
	std::cout << "delta: " << delta << std::endl;
	datei << "Schätzung Feigenbaum-Konstante: " << delta << std::endl;
	
	return 0;	
}
Exemplo n.º 11
0
void redirect (std::ostream& strm, const std::string& dateiname)
{
    // Datei (mit dazugehörigem Puffer) zum Schreiben öffnen
    std::ofstream datei(dateiname.c_str());
    
    // Ausgabepuffer des übergebenen Streams merken
    std::streambuf* strm_puffer = strm.rdbuf();

    // Ausgaben in die Datei umlenken
    strm.rdbuf(datei.rdbuf());

    datei << "direkt in die Datei geschriebene Zeile" << std::endl;
    strm  << "auf den umgelenkten Stream geschriebene Zeile"
          << std::endl;

    // alten Ausgabepuffer des übergebenen Streams restaurieren
    strm.rdbuf(strm_puffer);

}  // schließt die Datei und den dazugehörigen Puffer
Exemplo n.º 12
0
bool lade_datei_in_feld(char* dateiname, std::vector<int> &feld) {
	bool alles_ok = true;
	std::fstream datei(dateiname);
	std::string buffer = "";
	std::vector<int> pruef;
	while (datei.good()) {
		getline(datei, buffer);
		for (unsigned int i = 0; i < buffer.size(); i++) {
			char zeichen = buffer[i];
			int zahl = 0;
			if (zeichen != ' ') {
				if (pruefe_ob_zahl(zeichen)) {
					std::stringstream str;
					str << zeichen;
					str >> zahl;
					pruef.push_back(zahl);
				}
				else {
					alles_ok = false;
				}
			}
		}
	}
Exemplo n.º 13
0
// ------------------------------------------------------
// wird zZ. nicht verwendet ->   siehe readFileCtyWtDat()
void laDiag::readlaTextFile()
{
  int i, n, p;
  QString zeile, z, a, lpref;
  char buf[50];
  
  int Status = QMessageBox::question(this,
               tr("Datei ueberschreiben?"),
               tr("Die Tabelle la.DXCC existiert bereits.\n"
                  "Wollen Sie diese Tabelle ueberschreiben?\n"
                  "Alle bisher eingetragenen Prefixe gehen hierbei verloren !"),
               QMessageBox::Yes,QMessageBox::No);
   if(Status != QMessageBox::Yes)
     return;
   
   // -
   sprintf(buf,"%s/log/qtlog_arrl_dxcc.dat",(char*)getenv("HOME"));
   QFile datei(buf);
   if(! datei.open(QFile::ReadOnly)) {
     QMessageBox::information( this,
       tr("ARRL_DXCC.dat"),
       tr("Datei 'qtlog_arrl_dxcc.dat' kann nicht geoeffnet werden !"));
     return;
   }
   
   dbflg = 1;
   QSqlQuery query;
   
   qy = "DELETE FROM tla";                       // alte Tabellen löschen       besser DROP ?
   query.exec(qy);
   qy = "DELETE FROM tpref";
   query.exec(qy);
   
  QTextStream inStream(&datei);                 // neue Tabellen aufbauen
  QString qy;
  while(1) {                                    
     while( !inStream.atEnd()) {                
        zeile = inStream.readLine(0);
        if(zeile[0] != QChar('#'))              
           break;
     }
    
    // ab hier die 1. und alle folgenden Text_zeilen bearbeiten
    // -------------------------------------------------------------------------
    // pref: name: cont: ITUz: QQz: tz: Br: Lg: pref: WAE: WPX: Adif: Notiz:
    //    0:    1:    2:    3:   4:  5:  6:  7:    8:   9:  10:   11:    12:
    // -------------------------------------------------------------------------
    QSqlQuery query;
    while( 1 ) {
       i = 0, n = 0, p = 0;
       qy = "INSERT INTO tla VALUES (";
       while( n != 13) {                         // 0 - 13 Felder bearbeiten
          while(zeile[i] != QChar(':')) i++;     // index i vor bis ':'
          z = "";
          a = "";
          while(i != p) a += zeile[p++];         // 1.item holen: kopiere item nach -> a
          z += a.simplified();                   // space entfernen
          if ( n == 0 )                          // Feld 0 ?
             lpref = z;                          // ja: pref sichern
          if( n == 2 ) {                         // Feld 2 Countinent ?
             a = z.toUpper();                    // ja: wandle in großen Buchtaben
             z = a;
          }
          if(n == 6) {                           // check geograph.Koordin.
             if(z.endsWith("N") == true) {       // ja: Breite NORD ? '+'
                a = z.left(z.length() -1);
                z = a;
             }
              else {                             // ist Breite SUED '-'
                a = "-"+z.left(z.length() -1);
                z = a;
              }
          }
          if( n == 7 ) {                         // falls Feld 7 - check geograph.Länge
             if(z.endsWith("E") == true) {       // ja: Länge E (OST)'+'
                a = z.left(z.length() -1);
                z = a;
             }
             else {                              // ist Laenge WEST '-'
               a = "-"+z.left(z.length() -1);
               z = a;
             }
          }
          qy += "'"+z;
          if( n == 12 ) {                        // letztes Feld ?
             qy += "'";                          // ja:
             break;
          }
          qy += "',";
          i++;                                  // text[i] position ':' im textfld
          p++;                                  // text[p] schreibposition
          n++;                                  // Feld_zähler
      }                                         // 12 Spalten durchlaufen
      qy += ")";                                // query fertig
      query.exec(qy);                           // la.prefix in db eintragen

      i = 0, n = 0, p = 0;
      zeile = inStream.readLine(0);
      while(1) {                                // alle sub_prefix_zeilen bearbeiten
        while(1) {                              // suche nach ',' ':' ';'
             if(zeile[i] == QChar(','))
                   break;
             else                               // oder
               if(zeile[i] == QChar(':'))
                break;
             else                               // oder
               if(zeile[i] == QChar(';'))
                break;
          i++;                                  // nicht gefunden: index vorrücken
        }
        z = "";
        while(i != p) z += zeile[p++];          // item_sub.prefix uebernehmen
        qy = "INSERT INTO tpref VALUES('";
        qy += z.simplified();                   // space entfernen
        qy += "','"+lpref+"')";                 // + ref_landes_prefix
        query.exec(qy);                         // SUb_prefix in db eintragen
	
        if(zeile[p] == QChar(';'))              // Zeilen_ENDE erreicht ?
            break;
        if(zeile[p] == QChar(':')) {            // falls zeilen_umbruch gefunden
          zeile = inStream.readLine(0);         
          i = 0, n = 0, p = 0;
        }
        else {
          i++;                                   // sonst weitermachen
          p++;
        }
       }
                    
       //if(++l == 400) {                        //  TEST
         // qDebug() << l << "jetzt return";     // -.-
       //   return;
       //}
       
       zeile = inStream.readLine();              // naechste laender_prefix_Zeile lesen
       if(zeile[0] == QChar('#'))
           break;                                // Datei_ENDE ?
       z = "";                                   // sonst neue Zeile
     }
      break;                                     // ENDE
  }
  datei.close();
  qy = "SELECT * FROM tla";                      // neue Tabelle von db lesen und anzeigen
  getLaTable(qy);
  dbflg = 0;
}
Exemplo n.º 14
0
// ========================================================================================================
// cty_tw.dat
// -------------------------------------------
void laDiag::readFileCtyWtDat()
{  
  int i, n, n1, n2, p, zlen;
  QString zeile, z, a;
  QString Country, pCQz, pITUz, eCQz, eITUz, Cont, Br, Lg, TimeOfset, Pref, Dxcc, subPref, sPref;
  QString subCountry, info;
  char buf[50];
 
     int Status = QMessageBox::question(this,
               tr("Datei ueberschreiben?"),
               tr("Die Tabelle cty_tw.dat existiert bereits.\n"
                  "Wollen Sie diese Tabelle ueberschreiben?\n"
                  "Alle bisher eingetragenen Prefixe gehen hierbei verloren !"),
               QMessageBox::Yes,QMessageBox::No);
     if(Status != QMessageBox::Yes)
       return;
  
  
     sprintf(buf,"%s/log/iniFiles/cty_wt.dat",(char*)getenv("HOME"));
     QFile datei(buf);
   
     if(! datei.open(QFile::ReadOnly)) {
        QMessageBox::information( this,
        tr("cty.dat"),
        tr("Datei 'cty_wt.dat' kann nicht geoeffnet werden !"));
      return;
     }
     
     n1 = 0;
     n2 = 0;
     QSqlQuery query;
     qy = "DELETE FROM tla";                        // alte Tabellen löschen  - besser DROP ?
     query.exec(qy);
     qy = "DELETE FROM tpref";
     query.exec(qy);
  
     QTextStream inStream(&datei);                  // neue Tabellen aufbauen
     QString qy;
     while(1) {                                     // bis atEnd() 
       while(1) {
	 if(inStream.atEnd()) {
	   datei.close();                          // ENDE
	   //qDebug() << "ENDE";
	   return;
         }
         else {
          zeile = inStream.readLine(0);
          if(zeile[0] != QChar('#')) {             // List_Anfang, 4 Info_Zeilen überspringen
             break;
          }
	 }
        }
       // --
       // ab hier die 1. und alle folgenden Text_zeilen bearbeiten
       // ---------------------------------------------------------------------------
       // country: CQz: ITUz: Cont: Br: Lg: GMT: pref: | Dxcc: WAE: WPX: Adif: Notiz:
       //       0:   1:    2:    3:  4:  5:   6:    7:      8:   9:  10:   11:    12:
       // ---------------------------------------------------------------------------
       // Primary Prefix
       info ="";
       QSqlQuery query;
       QSqlField field("feld",QVariant::String);  // arbeits_var. 'field'
       i = 0, n = 0, p = 0;                       // zeile enthält den String
       qy = "INSERT INTO tla VALUES (";           // Primary DXCC Prefix bilden
       while( n != 8) {                           // 0 - 7 Felder bearbeiten
           while(zeile[i] != QChar(':')) i++;     // index i vor bis ':'
           z = "";
           a = "";
           while(i != p) a += zeile[p++];        // 1.item holen: kopiere item nach -> a
           z = a.simplified();                   // space entfernen
           if ( n == 0 )                         // Feld 0 ?
              Country = z;                       // ja: Country
           else 
            if( n == 1 )                         // Feld 1 CQzone - primary_CQz
               pCQz = z;                         // 
           else 
            if( n == 2 )                         // Feld 2 ITUzone - primary_ITUz
              pITUz = z;                         // 
           else 
            if( n == 3 )                         // Feld 3 Continent
               Cont = z;                         // space entfernen
           else 
            if( n == 4 )                         // Feld 4 - check geograph.Breite
               Br = z;                           // space entfernen
           else
            if( n == 5 ) {                       // falls Feld 5 - check geograph.Länge
              if(z.indexOf("-") != -1) {         // ist '-'Zeichen vorhanden 'Ost'
	         z.remove(QChar('-'), Qt::CaseInsensitive);
                 Lg = z;                         // übernehme ohne Vorzeichen
              }
              else                               // nein; 'ist West' mit '-' Vorzeichen übernehmen
	        Lg = "-"+z;                      // 
	    }
           else 
            if( n == 6 ) {                       // Feld 6 TimeZone
	       if(z.indexOf("-") != -1) {
	         z.remove(QChar('-'), Qt::CaseInsensitive);
                 TimeOfset = "+"+z;
	       }
	       else
		 TimeOfset = "-"+z;
            }
           else
            if( n == 7 ) {                       // Feld 7 Prefix
               Pref = z;
	       Dxcc = Pref;                      // Primary DXCC-Prefix
	     break;
	    }
          i++;                                   // text[i] position ':' im textfld
          p++;                                   // text[p] schreibposition
          n++;                                   // Feld_zähler
       }                                         // 0 - 7 Spalten durchlaufen
       
       if(Pref.indexOf("*") != -1) {  // Primary DXCC: A * preceding this prefix indicates that the contry 
          Pref.remove("*");           // is on the DARC WAEDC list, and counts in CQ-sponsored
          info = "* nur DARC WAEdc & CQWW, nicht ARRL Contest";  // but not ARRL-sponsord contests
       }
       qy = "INSERT INTO tla VALUES ('"+Pref;    // Primary Prefix
       qy += "','"+Country;                      // --------------
       qy += "','"+Cont;
       qy += "','"+pITUz;
       qy += "','"+pCQz;
       qy += "','"+TimeOfset;
       qy += "','"+Br;
       qy += "','"+Lg;
       qy += "','"+Dxcc;
       qy += "','','','','"+info+"')";           // lawd,lwpx,adif,notiz
       query.exec(qy);                           // la.prefix in db eintragen 
       info ="";
       
       // jetzt Sub_prefixe übernehmen - die Parameter vom main_Prefix stehen in den Variablen
       // subPrefixe sind durch Komma getrennet.
       subCountry = "";
       while( 1 ) {                              // min. einen subPrefix gibt es immer
         zeile = inStream.readLine(0);
         zeile = zeile.simplified();
         if(zeile.indexOf("#") != -1) {          //check #; ja - ist sub_La_name
	    subCountry = zeile.replace(0,1,"-");
	    zeile = inStream.readLine(0);        // nächste zeile jetzt mit subprefixes
	    zeile = zeile.simplified();
	 }
	  
	 p = 0;
	 zlen = zeile.count();
	 while( 1 ) {                             // while zeile.count() != 0
	    z = "";                               // ein sPref_feld holen
	    while(1) {
	      if((zeile[p] == QChar(',')) | (zeile[p] == QChar(';')))
	        break;                            // p zeigt auf ','
	      z += zeile[p++]; 
	    }
	 
	  z.remove("=");
	  eCQz = pCQz;                           // mit primary laden
	  eITUz = pITUz;                         // falls keine abweichende CQz oder ITUz vorhanden ?  
          if((z.indexOf("(") == -1) & (z.indexOf("[") == -1)) {  
	     qy = "INSERT INTO tpref VALUES('";   // INSERT sub.prefix
             qy += z.simplified();                // subPrefix
             qy += "','"+Pref+"')";               // Primary_landes_prefix 
              // qDebug() << qy;
             query.exec(qy);                     
	  }
	  else {                                  // ABWEICHENDE zonen sind vorhanden
	    n1 = z.indexOf("(");                  // check auf CQz
	    if(n1 != -1) {                        // ja; 3H0(23)[42]
	      n2 = z.indexOf(")");                // separiere CQz, hole Prefix
	      sPref = z.left(n1);                 // subPrefix
	      eCQz = z.mid(n1+1,n2 -(n1+1));      // mit neuer CQz überschreiben
	      
	      n1 = z.indexOf("[");               // check auf ITUz
	      if(n1 != -1) {                     // ist auch vorhanden - 3H0(23)[42]
	        n2 = z.indexOf("]");
	        eITUz = z.mid(n1+1,n2 -(n1+1));  // mit neuer ITUz überschreiben
	      }
	    }
	    else {                               // keine CQz Änderung vorhanden
	      n1 = z.indexOf("[");               // check nur auf ITUz
	      if(n1 != -1) {
		n2 = z.indexOf("]");
		sPref = z.left(n1);
		eITUz = z.mid(n1+1,n2 -(n1+1));  // ITUz überschreiben
	      }
	    }
	     // --
	    if(eCQz.count() == 1) {              // prüfe zonen_str_len
	      s = "0"+eCQz;
	      eCQz = s;
	    }
	    
	    if(eITUz.count() == 1) {
	      s = "0"+eITUz;
	      eITUz = s;
	    }
	    
	    // - bilde subPrefix für abweichende CQ- und ITU_zonen                                    
	    if(Dxcc.compare("UA") == 0) {                    // European Russia
	      subPref = Dxcc+"-"+eCQz;                      // UA-16
	      i = subCountry.count();
	      subPref += subCountry.mid(i -3,2);            // UA-16KL
	    }
	    else 
	    if(Dxcc.compare("UA9") == 0) {                  // Asiatic Russia
	      subPref = Dxcc+"-"+eCQz;                      // UA9-18
	      i = subCountry.count();
	      subPref += subCountry.mid(i -3,2);            // UA-16TO
	    }
	    else 
	    if(Dxcc.compare("K") == 0) {                    // USA
	       subCountry.remove("USA");
	       subPref = Dxcc+"-"+eCQz+subCountry.mid(2,2); // K-04W0
	    }
	    else 
	    if(Dxcc.compare("VE") == 0) {                   // Canada
	       subPref = Dxcc+"-"+eCQz;                     // VE-04
	       i = subCountry.count();
	       subPref += subCountry.mid(i -2,2);           // VE-04
            }
	    else 
	    if(Dxcc.compare("VK") == 0) {                   // Australia
	       subPref = Dxcc+"-"+eCQz;                     // VK-30
	       subPref += subCountry.mid(2,3);              // VK-30QLD
	       subPref = subPref.simplified();              // (für VK-29WA 2-stellig )
            }
	    else
	    if(Dxcc.compare("LU") == 0) {                   // Argentinia
	       subPref = Dxcc+"-"+eCQz+subCountry.mid(2,3); // LU-13Rio
	    }
	    else
	    if(Dxcc.compare("BY") == 0) {                   // China
	       subPref = Dxcc+"-"+eCQz+subCountry.mid(2,3); // BY-24Hei
	       subPref = subPref.simplified();              // (für BY-24Ji 2-stellig )
	    }
	    else
	    if(Dxcc.compare("YB") == 0) {                   // Indonesia
	       subPref = Dxcc+"-"+eCQz+subCountry.mid(2,4); // YB-28Jaka  
	    }
	    else 
	    if(Dxcc.compare("PY") == 0) {                   // Brazil
	        subPref = Dxcc+"-"+eCQz;                    // PY-04
	        i = subCountry.count();
	        subPref += subCountry.mid(i -3,2);          // PY-04
	    }
	    else {                                          // default
	       subPref = Dxcc+"-"+eCQz+subCountry.mid(2,3); // wie BY-24Hei
	       subPref = subPref.simplified();              // (für BY-24Ji 2-stellig ) 
	    }
	    // -  
	    a = Country + subCountry;                    // falls subPref noch nicht vorhanden INSERT 
	    qy = "SELECT ldxcc FROM tla WHERE la='"+subPref+"'";
	    query.exec(qy);                              // falls nicht vorhanden anlegen
	    if( !query.size() ) {                        // Primary für subPref mit abweichenden CQz
               qy = "INSERT INTO tla VALUES ('"+subPref; // K-04W0 usw
               qy += "',";
               field.setValue(a);                           // la_name  zB United States K-04W0
               qy += db.driver()->formatValue(field,false); // Name - escape_field  - Dumont D'Urville Base
	       
               qy += ",'"+Cont;                             // NA
               qy += "','"+eITUz;                           //  abweichende UTIz
               qy += "','"+eCQz;                            // abweichende CQz
               qy += "','"+TimeOfset;                       // time_index
               qy += "','"+Br;                              // Br
               qy += "','"+Lg;                              // Lg
               qy += "','"+Pref;                            // K dxcc
               qy += "','','','','')";                      // lawd,lwpx,adif,notiz
               query.exec(qy);  
	    }
	    qy = "INSERT INTO tpref VALUES('";              //
            qy += sPref;                                    // space entfernen      ??
            qy += "','"+subPref+"')";                       // + ref_landes_prefix  ??
            query.exec(qy);                                 // SUb_prefix in db eintragen 
         }
         if((zeile[p] == QChar(';')) || (++p == zlen))
	   break;                                           // Zeien_Ende erreicht
	}                                                   // while zeile != 0
	//if(Pref.compare("CM") == 0) return;               // TEST       
	if(zeile[p] == QChar(';'))                          // falls subPrefixes_string_Ende
	  break;                                            // break für nächsten string
        }                                           //--- while subPrefixes_str != ';', - nächste Zeile lesen
    }
}
Exemplo n.º 15
0
// ====================================================================================
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// IMPORT 
// logFile, path_Dateiname, qsltype, rig, home_id
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void wadif::doImport(QString log,QString fpath, int qslmode, QString rig, int hId)
{
 QString val, token, prog;
 QString Call, qsoDate;
 QString t, z;
 int idx, n, oid, id, sekcnt, vl, len;
 bool ok;
 char buf[255];
    sekcnt = 10;                                      // Sekundenzähler 10..59
    oid = 0;
    QSqlQuery query;
    QFile datei( fpath );
    if(! datei.open(QIODevice::ReadOnly)) {
        state = 1;
        return;                                       // FEHLER
    }
    count = 0;
    QTextStream istream( &datei);
    
    // Header lesen ----------------------------------
    while( istream.atEnd() != true ) {                // HEADER '<eoh>' suchen
        len = 0;
        while(len == 0) {                             // leere zeilen ueberspringen
           t = istream.readLine(0);
           len = t.count();
           if(len != 0) break;                        // zeile mit text gefunden
        }
        idx = 0;                                      // text auswerten
        while(len != idx)
          if(t[idx++] == QChar('<')) break;           // suche '<'
        z = "";
        if(len != idx) {                              // '<' gefunden, text ist gueltig
           while(t[idx] != QChar(':') && t[idx] != QChar('>')) z += t[idx++]; 
           if(t[idx] == QChar('>')) {                 // '>' gefunden, dann ist token ohne text
              z = z.toUpper();                        // token immer groß
              if(z.compare("EOH") == 0) break;        // header_ende ?
           }
           else {                                     
              val = "";                               // ':' gefunden, es gibt text
              idx++;
              if(z.compare("PROGRAMID") == 0)         // wenn ProgrammID
                while(t[idx] != QChar('>')) val += t[idx++]; 
              vl = val.toInt(&ok,10);
              idx++;                                  
              val = "";
              n = vl;                                 // text:_laenge
              while(n-- != 0) val += t[idx++];        // text lesen
              prog = val;
           }
        }
    }
    // Header gelesen 
    
    // ------------ jetzt DATA ---------------------
    Error = "";
    count = 0;                                            // Datensatz Zähler
    while(istream.atEnd() == FALSE) {                     // ADIF_text bis Datei_ende bearbeiten
        i = 0;
        while(i != qsoFields) strcpy(adh[i++].value,"");  // value(datenfelder) QSO_tabelle loeschen
        i = 0;
        while(i != qslFields) strcpy(adhq[i++].value,""); // value(datenfelder) QSL_tabelle loeschen
        i = 0;
        while(i != awdFields) strcpy(adhw[i++].value,""); // value(datenfelder) AWD_tabelle loeschen

        z = istream.readLine(0); // daten_zeile lesen und bearbeiten. Zeile ist: stream ohne '\n' or '\l\r',
                                 // daten_token oder Zeilenanteile, daten_zeile_ende ist <eor> im stream.
        if(z.compare("<EOF>") == 0) break;                // File_ende ?

        while(z.count() == 0) {                 // check: es koennte eine leer_zeile vor <eor> sein
           if(istream.atEnd() == TRUE) break;   // oder eine leer_zeile mitten in der text_zeile (Ucx)
           z = istream.readLine(0);             // suche text
        }
        
        if(istream.atEnd() == TRUE) break;      // ok. ist File_ende
                                              
        len = z.count();                        
        vl = 0;
        Lcn  = "";
        Cqz  = "";
        Ituz = "";
        Dxcc = "";
        t = "";
        n = 0;
        idx = 0;                                     // zeilen_index 
        while( 1 ) {                                 // 1. zeile aus datastream
            while(len != idx) {
               if(z[idx++] == QChar('<')) break;     // gefunden
            }
            if(len == idx) {                         // das war eine leere_restzeile oder
                z = istream.readLine(0);   // zeile war token oder zeilen_anteil; neue zeile (token) lesen
                len = z.count();
                if(len == 0)                         // war leer_zeile
                   z = istream.readLine(0);          // n. zeile lesen
                len = z.count();
                idx = 0;
                while(z[idx] != QChar('<')) idx++;   // suche token_anfang
                idx++; 
            } 
            
            t = "";
            while(z[idx] != QChar(':') && z[idx] != QChar('>')) t += z[idx++]; // ADIF_token_text
            if(z[idx] == QChar('>')) {               // steht am Textende '>' ist token ohne Text
                t = t.toUpper();                     // wenn ja; immer groß
                if((t.compare("EOR") == 0) || (t.compare("EOF") == 0)) // check auf zeilen od. Datei_ENDE
                  break;
            }
            if(t.compare("EOF") == 0) break;         // * schluss *
            token = t;                               // ADIF_token sichern
            t = "";
            idx++;
            while(z[idx] != QChar('>') && z[idx] != QChar(':')) t += z[idx++]; // text_laenge holen
            vl = t.toInt(&ok,10);                    // laenge Datenstring sichern
    
            if(z[idx] == QChar(':')) {               // ist Datum_type <QSL_DATE:8:d>
              idx++;                                 // z.Z ':' überspringen
              idx++;                                 // z.Z 'd' überspringen
            }
            idx++;                                   // '>' überspringen
            t = "";
            n = vl;                                  // nutz_datenstring_laenge
            while(n-- != 0) t += z[idx++];           // nutz_daten lesen
            val = t;
                                                     // token + data bearbeitem
            token = token.toUpper();                 // ADIF_wort immer in groß_Buchstaben
            strcpy(buf,token.toAscii());             // ADIF_name nach ascii
            strcpy(buf,getdbName(buf));              // adif_name nach db_Spalten_name übersetzen
	    
             // <token:n>val im *QSO_Datensatz* gefunden - jetzt namen checken, variable ist in val
            if(strlen(buf) != 0) {          // falls db_spalten_name gefunden, value bearbeiten sonst überspringen      
                if(strcmp(buf,"rufz") == 0) {        // ist es das rufzeichen ?
                  n = val.indexOf("/");              // check Cept_prefix im val
                  if(n != -1) {                      // flush gefunden
                    if( n <= 4 ) {                   // ja ist cept ( es gibt auch prefixe grösser 4 !! )
                      s = val.left(n);               // ja: cept_pref sichern
                      s += "/";                      // flush anhängen
                      val.remove(0,n +1);            // cept_pref vom Rufzeiche entfernen
                      setValue((char *)"cept",s);    // CEPT_prefix setzen
                    }
                  }
                  setValue((char *)"rufz",val);   // Rufzeichen setzen ( ohne cept )
                  Call = val;                     // Rufz merken
                }
                else
                 if(strcmp(buf,"dxcc") == 0) {    // convertiere ADIF_Nr->la_pref
                   n = val.toInt(&ok,10);         // wenn dxcc numerisch
                   if(ok == true )                // wenn Zahl, convertiere nach pref
                     qy = "SELECT lcn,cqz,ituz,ldxcc FROM tla WHERE adif="+s.setNum(n);
                   else
                     qy = "SELECT lcn,cqz,ituz,ldxcc FROM tla WHERE ldxcc='"+val+"'";
                   query.exec(qy);
                   if(query.size() != 0 ) {             // prefix oder adif_nr gefunden
                      query.next();
                      Lcn  = query.value(0).toString(); // hole: cn aus Landestabelle
                      Cqz  = query.value(1).toString(); //       cqz
                      Ituz = query.value(2).toString(); //       ituz
                      Dxcc = query.value(3).toString(); //       dxcc_prefix
                      setValue(buf,Dxcc);               // setze:DXCC_pref -alpha_type
                   }
                   else {                               // nicht gefunden
                     Error += " Call "+getValue((char *)"rufz");
                     Error += " dxcc_prefix < "+val;
                     Error += " > nicht gefunden\n";    // tr() ???
                     state = 1;                         // es ist ein Fehler aufgetreten
                   }
                 }
                else
                 if(strcmp(buf,"band") == 0) {         // check Band
                   val = val.toUpper();
                   val = getSysBand(val);              // übersetze Band_variable
                   setValue(buf,val);                  // setze band
                 }
                else
                 if(strcmp(buf,"day") == 0) {          // check Qso_Tag
                    setValue(buf,val);                 // Tag setzen
                    qsoDate = val;                     // Datun merken
                 }
                else 
                  if(strcmp(buf,"btime") == 0) {       // check Qso_Start_zeit
                    if(vl != 6) {                      // falls Zeit 6.stellig
                      sekcnt++;                        // Sekunden +1
                      if(sekcnt == 60)                 // sek. min 10 <-> 60 max
                        sekcnt = 10;
                      val.append(s.setNum(sekcnt));    // Zeit auf 8.stellig erweitern
                    }
                    setValue(buf,val);                 // setze Zeit
                  }
                else
                  if(strcmp(buf,"etime") == 0) {       // Qso_Ende_zeit
                     if(vl != 6) {
                       sekcnt++;                       // Sekunden +1
                       if(sekcnt == 60)
                         sekcnt = 10;
                       val.append(s.setNum(sekcnt));   // Zeit 8.stellig
                     }
                     setValue(buf,val);                // setze Zeit
                  }
                else 
                  
                  if(strcmp(buf,"qslr") == 0) {  // ---------// QSL_r - Büro --------------------
		     if(val.compare("N") == 0)
		       val = "R";
		     else {
			if(val.compare("Y") == 0)            // QSL eralten ?
			  addQslFlag((char *)"qslRvia","B"); // QSLr_via 'B'
		     }
                     setValue(buf,val);                      // R, Y, I
	          }
                else
                  if(strcmp(buf,"qsls") == 0) {              // qsl_s
		     if( !qslmode )                          // qslMode = 0 ( daten aus contest )
		       val = "";
		     else {                                  // qslMode = 1 ( daten aus anderem LOG ) - wie Import
		       if(val.compare("N") == 0) {
		         val = "R";
			 setValue((char *)"prflg","B");      // QSL_Karte drucken - ja;
		       }
		       else
			 if(val.compare("Y") == 0)           // QSL gesendet - ja;
		          addQslFlag((char *)"qslSvia","B"); // QSLs_via 'B'
                     }
                     setValue(buf,val);                      // val = "", R, Y, I
                  }
                else {
                 setValue(buf,val);                          // gefunden, default - value in arry eintragen
                } 
             }
             else {  // -----------------------------------  // QSL * LOTW
	      strcpy(buf,token.toAscii());
              strcpy(buf,getdbNameQsl(buf));                 // adif_feldname übersetzen
              if(strlen(buf) != 0) {                          // falls Spalten_name gefunden, bearbeiten
                 if(strcmp(buf,"eqsls") == 0) {              // eQSL * eqsl_s    
		   if(val.compare("N") == 0)                 // (UcxL) N = noch nicht gesendet
                      val = "R";                             // setze R_equested
                    else {
                      if(val.compare("Y") == 0) {
                        addQslFlag((char *)"qslSvia","E");   // QSLs_via 'E'
                        setValueQsl(buf,val);                // val eintragen R, Y
		      }
		    }
		 }
	         else                                        // eQSL_r
                  if(strcmp(buf,"eqslr") == 0) {
                    if(val.compare("N") == 0)                // (UcxL) N = noch nicht erhalten
                      val = "R";                             // setze Requested
                    else {
                      if(val.compare("Y") == 0) {            // QSL erhalten ?
                        addQslFlag((char *)"qslRvia","E");   // QSLr_via 'E'
                        setValueQsl(buf,val);                // val eintragen R, Y
		      }
		    }
	        }
	        
	        else       // -------------------------------// LOTW * lotqsl_r
		if(strcmp(buf,"lotqslr") == 0) {             // ---------------
                   if(val.compare("N") == 0)                 // (UcxL) n = nicht erhalten
                      val = "R";                             // setze R_equested
                   else {
                     if(val.compare("Y") == 0) {             // QSL erhalten ?
                       addQslFlag((char *)"qslRvia","L");    // QSLr_via 'L'
                       setValueQsl(buf,val);                 // val eintragen R, Y
		     }
		   }
	        }
		else                                         // lotqsl_s
		if(strcmp(buf,"lotqsls") == 0) {
                   if(val.compare("N") == 0)                 // (UcxL) N = noch nicht erhalten
                      val = "R";                             // setze R_equested
                   else {
                     if(val.compare("Y") == 0) {             // QSL gesendet ?
                       addQslFlag((char *)"qslSvia","L");    // QSLs_via 'L'
                       setValueQsl(buf,val);                 // val eintragen R, Y
		     }
		   }
	        }
	        else
	         setValueQsl(buf,val);                        // default
	      }
              else {   // ----------------------------- AWD_daten_satz
                strcpy(buf,token.toAscii());
                strcpy(buf,getdbNameAwd(buf));         // adif_feldname nach dbname übersetzen
                if(strlen(buf) != 0) {                 // AWD_Type gefunden
                  setValueAwd(buf,val);                // value eintragen
                }
                else {                                 // Fehler_text setzen
                  Error += " Call "+getValue((char *)"rufz");
                  Error += " "+token;
                  Error += " text < "+val;
                  Error += " > nicht gefunden\n";      // tr() ??
                  state = 1;                           // es ist ein Fehler aufgetreten
                }
              } 
            }   // ein tocken bearbeitet
         }      // WHILE( 1 ) <eor> nicht erreicht
         
//--     ENDE_Adif_data_zeile -- <EOR> gefunden
         
          // fehlende Values nachtragen 
         if(getValue((char *)"dxcc").count() == 0) {   // falls dxcc_feld leer
           s = getValue((char *)"rufz");               // hole Rufzeichen
           n = 1;
           z = s.left(n);
           while(getla( z ) == 0) {
              if(n >= 4) {                             // unbekannt
                Error += "dxcc fuer Rufzeichen "+s+" nicht gefunden\n";
                state = 1;                             // es ist ein Fehler aufgetreten
               break;
              }
              z = s.left(++n);
           }
           setValue((char *)"cn",Lcn);
           setValue((char *)"cqz",Cqz);
           setValue((char *)"ituz",Ituz);
           setValue((char *)"dxcc",Dxcc);
         }
         
         if(getValue((char *)"cn").count() == 0) {     // falls Cont fehlt
            setValue((char *)"cn",Lcn);                // setze continent
         }
         
         if(getValue((char *)"cqz").count() == 0) {   // falls CQ_zone fehlt
            setValue((char *)"cqz",Cqz);              // setze..CQzone
         }
         
         if(getValue((char *)"ituz").count() == 0) {  // falls ITU_zone fehlt 
            setValue((char *)"ituz",Ituz);            // setze ..zone
         }
         
         if(getValue((char *)"etime").count() == 0) {             // falls Ende_zeit fehlt
            setValue((char *)"etime", getValue((char *)"btime")); // setze = bzeit
         }
         
         s = s.setNum(hId);                          // portabel_id
         strcpy(buf,s.toAscii());
         setValue((char *)"rig",rig);                // ( ist für DRUCK erforderlich )
         setValue((char *)"qline",(char *)"KW");     // kein ADIF_token - könnte leer bleiben
         setValue((char *)"quarter",buf);            // ist ADIF_import_portabel_type
         setValue((char *)"op",(char *)"0");         // Operator intern_value z.Z.= 0
// ------ DEBUG
/*
         n = 0;    // TEST Data ausgeben
         i = 0;
         while(i != qsoFields) {
            qDebug() << adh[i].pos <<  adh[i].field << adh[i].adifnam << adh[i].value;
            i++;
         }
         n = 0;
         i = 0;
         while(i != qslFields) {
           qDebug() << adhq[i].pos <<  adhq[i].field << adhq[i].adifnam << adhq[i].value;
           i++;
         }
         n = 0;
         i = 0;
         while(i != awdFields) {
           qDebug() << adhw[i].pos <<  adhw[i].field << adhw[i].adifnam << adhw[i].value;
           i++;
         }
         //datei.close(); 
         //return;        
*/
// ----- DEBUG
         QSqlQuery query;
	 
// --    OM --------------------------------------------  alle LOG_Datensatze erzeugen
         qy = "SELECT omid FROM "+log+"om WHERE rufz='";
         qy += Call;
         qy += "'";
         query.exec(qy);
         n = query.size();
         if(n == 0 ) {                                    // ist der OM neu ?
            qy = "INSERT INTO "+log+"om VALUES (0,'";     // ja;
            qy += Call;
            qy += "','";
            qy += adh[2].value;
            qy += "')";
            QSqlQuery query;
            query.exec(qy);
            oid = query.lastInsertId().toInt();           // Datensatz merken
         }
         else {
          query.next();
          oid = query.value(0).toInt();
         } 

         // --    QSO ------------------------------------------
         n = 3;                         // starte auf index_pos_3
         qy = "INSERT INTO "+log+" VALUES (0,"+s.setNum(oid)+",'";
         qy += adh[0].value;            // cept
         while(n != qsoFields -3 ) {    // alle felder übernehmen
           qy += "','";
           qy += adh[n++].value;
         }
         qy += "',";
         qy += adh[n++].value;          // quarter
         qy += ",";
         qy += adh[n++].value;          // Operator
         qy += ")";
         query.exec(qy);                // Datensatz eintragen
         id = query.lastInsertId().toInt();
	 
// --    QSL -------------------------------------------
         n = 0;                         // starte auf index_pos_0  
         qy = "INSERT INTO "+log+"qsl VALUES (0,"+s.setNum(id)+",'";
         qy += Call;
         qy += "','"+qsoDate;
         while(n != qslFields) {         // alle felder übernehmen
           qy += "','";
           qy += adhq[n++].value;
         }
         qy += "')";
         query.exec(qy);                 // Datensatz eintragen
         // qDebug() << query.lastError();
	 
// --    AWD -------------------------------------------
         n = 0;
         while(n != awdFields) {             // alle felder prüfen und übernehmen
          if(strlen(adhw[n].value) != 0) {   // value eingetragen ?
             qy = "INSERT INTO "+log+"awd VALUES (0,"+s.setNum(id)+",'";
             qy += Call;
             qy += "','";
             qy += adhw[n].field;
             qy += "','";
             qy += adhw[n].value;
             qy += "')";
             query.exec(qy);               // Datensatz eintragen
           }
           n++;                            // nächsten awd_type
         }
         count++;                          // 1 Datensatz kompl. bearbeitet - QSO_zähler +1
/*
         if(count == 1) {                   // TEST einen Datensatz bearbeiten
          datei.close();
          return;
         }
*/
     }
     datei.close();
     return;
}
Exemplo n.º 16
0
/****************************************************************************
 * MetaEdit
 *
 * meta bearbeiten
 ***************************************************************************/
bool
MetaEdit(string dir)
{
	int choice = -1;
	bool changed = false;

	dir += "meta.xml";
	string line, quelltext;

	ifstream in(dir.c_str());
	while(getline(in, line))
		quelltext += line + "\n";

	GuiWindow promptWindow(520,360);
	promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
	promptWindow.SetPosition(0, -10);
	GuiImageData btnOutline(Theme.button_small);
	GuiImageData btnOutlineOver(Theme.button_small_focus);
	GuiTrigger trigA;
	trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);

	GuiImageData dialogBox(Theme.dialog_background);
	GuiImage dialogBoxImg(&dialogBox);

	TextLine meta;
	meta.text(quelltext, 18, 440);

    int i = 0;
    int y = 90;
	int place = 25;

	int number = 7;
	int startline = 0;

	GuiText upTxt("c", 22, (GXColor){Theme.text_1, Theme.text_2, Theme.text_3, 255});
	upTxt.SetFont(symbol_ttf, symbol_ttf_size);
	upTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
	upTxt.SetPosition(0, y -20);

	GuiText downTxt("d", 22, (GXColor){Theme.text_1, Theme.text_2, Theme.text_3, 255});
	downTxt.SetFont(symbol_ttf, symbol_ttf_size);
	downTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
	downTxt.SetPosition(0, y + (place * (number-1)) + 15);

	GuiButton * Entrie[number];
	GuiText * EntrieTxt[number];

	for(i=0; i < number && i < (signed)meta.line.size(); i++)
	{
		EntrieTxt[i] = new GuiText(meta.line[i].c_str(), 18, (GXColor) {Theme.text_1, Theme.text_2, Theme.text_3, 255});
		EntrieTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
		Entrie[i] = new GuiButton(440, 18);
		Entrie[i]->SetLabel(EntrieTxt[i]);
		Entrie[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
		Entrie[i]->SetPosition(40, y);
		Entrie[i]->SetTrigger(&trigA);
		y += place;
	}

	GuiText titleTxt("meta.xml", 22, (GXColor){Theme.text_1, Theme.text_2, Theme.text_3, 255});
	titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
	titleTxt.SetPosition(0,40);

	GuiText backTxt(tr("OK"), 22, (GXColor){Theme.button_small_text_1, Theme.button_small_text_2, Theme.button_small_text_3, 255});
	GuiImage backImg(&btnOutline);
	GuiImage backImgOver(&btnOutlineOver);
	GuiButton back(btnOutline.GetWidth(), btnOutline.GetHeight());

	back.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
	back.SetPosition(0, -25);

	back.SetLabel(&backTxt);
	back.SetImage(&backImg);
	back.SetImageOver(&backImgOver);
	back.SetTrigger(&trigA);
	back.SetState(STATE_SELECTED);

	promptWindow.Append(&dialogBoxImg);
	promptWindow.Append(&titleTxt);

	for(int x=0; x < i; x++)
		promptWindow.Append(Entrie[x]);

	if((signed)meta.line.size() >= number)
	{
		promptWindow.Append(&upTxt);
		promptWindow.Append(&downTxt);
	}

	promptWindow.Append(&back);

	HaltGui();
	mainWindow->SetState(STATE_DISABLED);
	mainWindow->Append(&promptWindow);
	mainWindow->ChangeFocus(&promptWindow);
	ResumeGui();

	while(choice == -1)
	{
		usleep(100);

		if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP
		   || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_UP)
		{
			startline = meta.text_up();

			for(int x=0; x < i; x++)
				EntrieTxt[x]->SetText(meta.line[x + startline].c_str());

			HaltResumeGui();
		}

		if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN
		   || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_DOWN)
		{
			startline = meta.text_down(number);

			for(int x=0; x < i; x++)
				EntrieTxt[x]->SetText(meta.line[x + startline].c_str());

			HaltResumeGui();
		}

		if(back.GetState() == STATE_CLICKED)
			choice = 0;

		for(int x=0; x < i; x++)
		{
			if(Entrie[x]->GetState() == STATE_CLICKED)
			{
				Entrie[x]->ResetState();

				string temp = meta.line[x + startline];
				while((signed)temp.find("\n") != -1)
					temp.replace(temp.find("\n"), 1, "¶");

				char new_text[256];
				sprintf (new_text, "%s", temp.c_str());
				OnScreenKeyboard(new_text, 256, true);

				mainWindow->SetState(STATE_DISABLED);
				promptWindow.SetState(STATE_DEFAULT);

				if(strcasecmp(new_text,"NULL") != 0 )
				{
					changed = true;
					meta.line[x + startline] = new_text;
					while((signed)meta.line[x + startline].find("¶") != -1)
						meta.line[x + startline].replace(meta.line[x + startline].find("¶"), 1, "\n");

					EntrieTxt[x]->SetText(meta.line[x + startline].c_str());

					quelltext.clear();
					for(int a = 0; a < (signed)meta.line.size(); a++)
						quelltext += meta.line[a];

					meta.text(quelltext, 18, 440);
					for(int x=0; x < i; x++)
						EntrieTxt[x]->SetText(meta.line[x + startline].c_str());
				}

				break;
			}
		}
	}

	if(changed)
	{
		ofstream datei(dir.c_str());
		datei << quelltext;
	//	for(int i = 0; i < (signed)meta.line.size(); i++)
	//		datei << meta.line[i];
	}

	HaltGui();
	mainWindow->Remove(&promptWindow);
	mainWindow->SetState(STATE_DEFAULT);
	ResumeGui();
	return choice;
}