Inhalte eines Ordners prüfen



  • @Sunday 👍

    @azad187
    Stell Dir vor, wir wären Computer. Die Syntax und die Struktur müssen stimmen, damit wir Dich verstehen und so reagieren, wie Du es beabsichtigst.



  • vergisst es ich suche woanders hilfe



  • ihr kappiert hier einfach nichts ihr seid doch alle luschen



  • azad187 schrieb:

    ihr kappiert hier einfach nichts ihr seid doch alle luschen

    Jupp. Großmeister der deutschen Schriftsprache.



  • ihr kappiert hier einfach nichts ihr seid doch alle luschen

    Genial, keine Zähne im Mund, aber La Paloma pfeiffen.

    Mal sehen wo er aufschlägt



  • Was kann ich dafür wenn es auf dem Forum so viele Witzbolde gibt, die nichts besseres zu tun haben als mein Nickname zu nutzen, um blöde Sachen zu posten.

    Der Admin kann ja gerne die IP's checken.

    Und eure Reaktion darauf sagt alles..... wofür gibt es denn ein Forum...dachte hier bekommt man Hilfe.

    Ein paar konstruktive Vorschläge waren ja dabei aber bei den meisten kommt nix rum.

    Hier mal ein Bsp. was ich mir erwartet habe

    http://www.source-code.de/viewtopic.php?t=821&highlight=findfirst

    Da werdens sie geholfen 👍



  • Der Admin kann ja gerne die IP's checken.

    Und was soll das aussagen -> nix

    Und eure Reaktion darauf sagt alles..... wofür gibt es denn ein Forum...dachte hier bekommt man Hilfe.

    Die hast du mehr als genug bekommen, sorry, wenn du nicht lernen willst du bei deiner nicht funktionierenden Struktur bleiben willst -> musst dann halt alleine klarkommen

    FINDFIRST

    http://www.marquardtnet.info/cecke/dlls.3/3_chfilesearch.html



  • azad187 schrieb:

    Was kann ich dafür wenn es auf dem Forum so viele Witzbolde gibt, die nichts besseres zu tun haben als mein Nickname zu nutzen, um blöde Sachen zu posten.

    Der Admin kann ja gerne die IP's checken.

    Und eure Reaktion darauf sagt alles..... wofür gibt es denn ein Forum...dachte hier bekommt man Hilfe.

    Ein paar konstruktive Vorschläge waren ja dabei aber bei den meisten kommt nix rum.

    Hier mal ein Bsp. was ich mir erwartet habe

    http://www.source-code.de/viewtopic.php?t=821&highlight=findfirst

    Da werdens sie geholfen 👍

    Wer hat das für dich geschrieben ?
    So kann man dich wenigstens verstehen. 🙄



  • Laß Dich registrieren. Dann kann zumindest niemand Deinen Nickname mißbrauchen. 😉



  • So habe mich nun registriert, um mich vor Missbrauch zu schützen. 🙂

    Um nochmals zu klären was mein Problem ist:

    1. Ich habe 1 Ordner(y) wo X Datein drin sind.

    2. Von diesem Ordner(y) aus sollen nun nacheinander alle Files gemoved werden zu einem anderen Ordner(z), aber in dem Ordner(z) wo die Datei hingemoved werden soll darf nur dann etwas reigemoved werden, wenn der ordner leer ist.

    3. Das ganze soll so lange stattfinden bis alle Datein aus dem Ordner(y) weggemoved worden sind.



  • Ja und ?
    Du hast deine Dateinamen sicherlich in irgendeiner Liste stehen.
    (TStringList) stehen.Wenn ich das richtig gesehen habe in einem Memo.
    Alle 3 Sekunden holst du dir aus dieser Liste eine andere "Zeile" (neuen Dateinamen) und kopierst diese Datei in deinen Zielordner.



  • Eigentlich könnte der Thread geschlossen werden, es ist alles gesagt worden



  • Jaja ds ist mir in etwa schon klar, aber das Problem ist folgendes

    if (Query1->Fields->Fields[9]->AsString == "ISDN")
       {
         {
         TSearchRec SearchRec1;
    AnsiString szDirectory1;
        szDirectory1="C:\\T_ISDN\\";
        if (FindFirst(szDirectory1 + "*.*" , faAnyFile, SearchRec1) == 0)
        {
        ShowMessage("Ordner Voll versuch es nochmal");
        }
        else
        {
         Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_nerv.gtw");
         Memo1->Lines->Clear();
         }
    

    Wenn der Ordner eine Datei enthält gibt gibt er die Showmessage aus und macht dann normal weiter mit der for-schleife

    for (Query1->First();!Query1->Eof;Query1->Next())
    

    Aber was ich brauche ist eine Art repeat funktion in der If-Schleife, denn er soll ja keinen Datensatz überspringen sonder so lange in der Schleife bleiben bis der Ordner wieder frei ist, ansonsten überspringt er alle und speichert nur eine Datei.



  • Wieviel male wurde hier schon gesagt, das du die Schleife nicht brauchst ?
    Also nochmal:Du setzt das was in der Schleife passiert in einen Timer.
    Und das:

    for (Query1->First();!Query1->Eof;Query1->Next())
    

    raus ....



  • wieviel mal habe ich gesagt das das nicht funzt....

    //--- Wenn keine Datein gewählt wurden gar nicht erst mit Transfer starten
    if (Form1->ListBox1->Items->Count ==0)
     {
     ShowMessage("Bitte Dateien auswählen");
     }
      else
       {
    
    for (Query1->First();!Query1->Eof;Query1->Next())
    {
    Timer1->OnTimer = Timer1Timer;
    }
    
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    Timer1->Enabled=false;
    TStringList* lol = new TStringList();
    int i=0,b=0;
    int B=0;
    
    //---Anfang der Kopfzeile der Textdatei------------------------------
    Memo1->Lines->Clear();
    b=0;
    Label5->Caption = FormatDateTime("DDD, DD. MMM YYYY HH:MM:SS +0001", Now());
    Memo1->Lines->Add("$$ Hotel");
    Memo1->Lines->Add("T "+Query1->Fields->Fields[0]->AsString+Query1->Fields->Fields[8]->AsString+"");
    Memo1->Lines->Add("");
    Memo1->Lines->Add("From: Hotel");
    Memo1->Lines->Add("Organization: Hotel");
    Memo1->Lines->Add("To: "+Query1->Fields->Fields[0]->AsString+Query1->Fields->Fields[8]->AsString+"("+Query1->Fields->Fields[1]->AsString+" "+Query1->Fields->Fields[2]->AsString+")");
    Memo1->Lines->Add("Date: "+Label5->Caption);
    Memo1->Lines->Add("Subject: FileTransfer");
    Memo1->Lines->Add("Application: Soft 0.5");
    Memo1->Lines->Add("");
    //--- Ende der Kopfzeile----------------------------------------------
    
    //--- Einfacher Zähler------------------------------------------------
      for (i=0; i<ListBox1->Items->Count; i++)
        {
         b++;
        }
    //--------------------------------------------------------------------
    
    //--- Einfügen von Textdatei zur Komplettdatei------------------------
    Memo1->Lines->Add("FileCounter: "+IntToStr(b));
    
      for (i=0; i<ListBox1->Items->Count; i++)
      {
      Label5->Caption=ListBox1->Items->Strings[i];
      lol->LoadFromFile(ListBox1->Items->Strings[i]);
      Memo1->Lines->Add("FileName: "+LowerCase(ExtractFileName(Label5->Caption)));
      Memo1->Lines->Add("FileType: ASCII");
      Memo1->Lines->AddStrings(lol);
      }
    //---------------------------------------------------------------------
    
    //--- Datein speichern anhand der Menge der Datensätze die vorhanden sind
      B++;
      if (Query1->Fields->Fields[12]->AsString == "Falsch")
      {
       if (Query1->Fields->Fields[9]->AsString == "ISDN")
       {
         {
         Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_nerv.gtw");
         Memo1->Lines->Clear();
         }
       }
       else
       {
        Memo1->Lines->SaveToFile("C:\\T_ANAL\\"+Query1->Fields->Fields[0]->AsString+"_nerv.gtw");
       Memo1->Lines->Clear();
       }
      }
    else{};
    Timer1->Enabled=true;
    }
    }
    }
    

    So, normalerweise sollte er ja jetzt alle 3Sekunden einen Datesatz anfügen bis zum Schluss.. macht er aber nicht..



  • for (Query1->First();!Query1->Eof;Query1->Next()) 
    { 
    Timer1->OnTimer = Timer1Timer; 
    }
    

    Was willst Du damit erreichen?

    Du weist dem Ereignis OnTimer sooft den Wert Timer1Timer (Programmroutine) zu, wie die Schleife durchlaufen wird. Und das hintereinander weg.

    Ich persönlich verstehe den Sinn dieser Code-Zeilen nicht. 😕

    Auslösen tust Du das Ereignis so nicht.



  • Ja das ist mir auch schon aufgefallen das das schwasinnig ist :(.

    Aber ich weiss nunmal nicht wie es geht deswegen Frage ich ja nach einer Hilfe von euch.

    Manche sagen schreib die Schleife raus andere rein...
    Mein Fazit schreibe ich sie Raus ist es Quatsch..
    Schreibe ich sie rein, macht er alle 3sec alle Files neu,
    was ja auch nicht dem Sinn entspricht.

    Deswegen hatte ich ja vor sie bei der Ausgabe zu machen.

    if (Query1->Fields->Fields[12]->AsString == "Falsch")
      {
       if (Query1->Fields->Fields[9]->AsString == "ISDN")
       {
        Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_ODDSET.gtw");
       Memo1->Lines->Clear();   
    }
    
      else
       {
        Memo1->Lines->SaveToFile("C:\\T_ANAL\\"+Query1->Fields->Fields[0]->AsString+"_ODDEST.gtw");
       Memo1->Lines->Clear();
       }
    

    ..denn da wird bei jedem Schleifendurchlauf 1 Datei Analog und 1 Datei ISDN gepseichert,
    und da er ja nach jeder Speicherung 3sek warten soll, muss der Timer da irgendwie rein nur wie ?...

    Wichtig ist das so lange die verdammte for-Schleife nicht weiterlaufen darf !!,da sie sonst Datensätze überspringt und die Dateien nicht speichert(hatte ich aber alles schon 10x erwähnt). 🙂



  • void __fastcall TForm1::Timer1Timer(TObject *Sender) 
    { 
       Timer1->Enabled=false; 
       if(!Query1->Eof) 
       {
    
          //Dein Teil zum speichern
    
          Query1->Next();
          Timer1->Enabled=true;
       }
       else Timer1->Enabled=false;
    }
    

    Beim Timer starten was du über Buttonclick oder sonstwo tust solltest du noch dein

    Query1->First();
    

    ausführen.



  • Oh das sieht nicht schlecht aus.
    Das werde ich gleich mal richtig anpassen hatte schon einen kleinen Test gemacht, das er mir alle 3 Sekunden den Benutzernamen ausgibt und dann den nächsten... das geht schonmal.

    Danke schonmal 🤡



  • Sehr gut es funzt 🙂
    Hab vielen Dank 😉

    Nun wäre dann nur noch das Problem mit dem Ordner.. haste dafür auch noch ne lösung 🙂 ?

    Ich erkläre es nochmal ;-):

    1. Ordner X ist leer= Ok 1 Datei darf rein
    2. Ordner X eine Datei drin gehe auf Ordner Y
    3. Ordner Y ist leer= Ok 1 Datei darf rein
    4. Ordner Y eine Datei drin gehe auf Ordner Z
    5. Ordner Z ist leer= Ok 1 Datei darf rein
    6. Ordner Z eine Datei drin gehe auf den nächsten freien Ordner (X,Y,Z)
    wo keine Datei mehr drin ist. Ansonsten Warte bis 1 Ordner Frei ist bis alle Datein verstaut sind 😃


Anmelden zum Antworten