Leere Zeilen aus memo Felder automatisch löschen



  • Hi Leute...

    Ich brauche wieder mal eure Hilfe und zwar habe ich ein Programm wenn man es auf macht lädt er ne textdatei in einen memo feld...

    dazu machte ich ein extra programm was weitere daten in der datei test.txt speichern soll macht er auch nur speichert er 4 leerzeilen mit die ich nicht brauche...

    meine Frage gibt es ein befehl wo man leere zeilen aus einen memo feld gleich beim starten des programms löscht so das alles unter ein ander steht ???

    hoffe ich habs ordentlich erklärt sonst müsst ihr bitte nochmal fragen 🙂

    Danke bye Malcolm :p



  • hi,

    wie wäre es mal mit Satzzeichen? Ist ja kaum lesbar.

    Stelle Gegenfrage: Warum werden 4 Leerzeilen abgespeichert? Wenn Du die nicht brauchst, dann speicher die doch nicht mit ab 😉

    Ansonsten würde ich sagen die Zeile auf Zeichen prüfen und wenn Zeile leer dann nicht einlesen.



  • hi

    super danke für den tipp wenn ich alles wüsste würde es wohl kaum dieses Forum geben 😛

    so wieso er die 4 leerzeichen macht weis ich nicht normal darf er es ja nicht machen meine frage ist nicht wieso die da sind sondern wie ich sie weg bekomme

    🙂 also wäre schön wenn jemand mir helfen kann wie man ein befehl macht das wenn eine leere zeile in einen memo feld ist das er die löscht...

    if (Memo1->Lines->Text==""){
    Memo1->lines->delete();
    }

    so geht es net das weis ich wisst ihr wie man das macht ??? thx

    Bye Malcolm



  • Hallo,

    if (Memo1->Lines->Strings[2] == ""){
    Memo1->lines->Delete(2);
    }
    

    nur so als Beispiel, mit einer for Schleife kannste jede Zeile prüfen.

    Gruß



  • hi daniel danke dir für deine hilfe ich habe es so gemacht jedoch sind die zeilen immeronoch da 😞

    ich denke ich weis wieso da eine leertaste ensteht...

    Memo2->Lines->LoadFromFile("quiz.txt");
    Memo3->Lines->SaveToFile("quiz.txt");
    Memo2->Lines->Add(Memo1->Lines->Text);
    Memo2->Lines->SaveToFile("quiz.txt");
    

    iczh speichere eine leere zeile ab die sich dann immer wieder holt hmm

    ich denke wenn ich die datei lösche statt ein memo feld zu saven würde es eher gehen wie lösche ich eine datei wie hier quiz.txt ???

    oder habt ihr ne bessere idee ??? thx Malcolm



  • Es klappt ganz sicher, allerdings sollte dir bewusst sein, dass, wenn du eine Zeile rauslöscht, du auch das i nicht erhöhen darfst, ansonsten überspringt er nacheinanderfolgende Leerzeilen.

    for(int i=0;i<Memo1->Cout;i++)
    {
    if(Memo1->Lines->Strings[i]=="")
    {
    Memo1->Lines->Delete(i);
    i--;
    }
    }[
    


  • XMagic schrieb:

    [...] dass, wenn du eine Zeile rauslöscht, du auch das i nicht erhöhen darfst, ansonsten überspringt er nacheinanderfolgende Leerzeilen.

    Üblicherweise lässt man in solchen Fällen die Schleife einfach rückwärts laufen.

    for(int i = Memo1->Count - 1; i <= 0; i--)
    {
      if(Memo1->Lines->Strings[i] == "")
        Memo1->Lines->Delete(i);
    }
    

    malcolm18:
    Die Leerzeilen entstehen, weil im Memo automatisch ein Zeilenumbruch an die letzte Zeile angehängt wird.
    Da gibt es sicher Möglichkeiten das zu vermeiden, alledrings wird aus deiner reichlich konfusen Beschreibung nicht klar, was du eigentlich erreichen willst bzw. was genau dein Programm machen soll.



  • Hallo Jansen

    ich habe mir schon gedacht das mit meiner beschreibung niemand was anfangen kann ich versuchs nocheinmal zu erklären...

    ich baue ne ein programm was quizdaten erstellt...

    mein Hauptprogramm lädt die quiz.txt am anfang in einen memo1 feld rein..

    dann habe ich eine art update exe gebaut für das Hauptprogramm...

    wenn man auf ok button drückt öffnet er die datei quiz.txt in ein unsichtbares memo feld...

    danach speichert er ein leeres memo feld in die datei ab um den inhalt zu löschen...

    danach speichert er das unsichtbarer memo feld 1 (was er ja am anfang geladen hat mit der datei quiz.txt) und das unsichtbare memo feld2 wo meine neuen fragen stehen zusammen ab in der datei quiz.txt...

    so das Problem er speichert ganz zum schluss noch leerzeilen ab die müssen aber unbedingt raus.. mein code wo er das update macht wnen man auf ok drückt sieht so aus:

    Memo2->Lines->LoadFromFile("quiz.txt");
    Memo3->Lines->SaveToFile("quiz.txt");
    Memo2->Lines->Add(Memo1->Lines->Text);
    Memo2->Lines->SaveToFile("quiz.txt");
    

    jansen dein code geht so irgentwie nicht ich weis zwar das nach memo1 noch lines kommt bevor man mit count anfängt aber trotzdem geht das bei form create net :(((

    könnt ihr mir vill. sagen woran das liegt oder lösungs vorschläge machen ???

    wäre super danke bye Malcolm



  • Hallo

    wenn man auf ok button drückt öffnet er die datei quiz.txt in ein unsichtbares memo feld...

    Keine Unsichtbaren Controlls verwenden. Du brauchst bloß eine TStringList. Siehe FAQ hier im Forum, gleich die TOP 3.

    so das Problem er speichert ganz zum schluss noch leerzeilen ab die müssen aber unbedingt raus.. mein code wo er das update macht wnen man auf ok drückt sieht so aus:

    sollte so aussehen

    Memo2->Lines->LoadFromFile("quiz.txt");
    //Memo3->Lines->SaveToFile("quiz.txt"); nutzlos! Diese Datei überschriebst du schon 2 Zeilen später!
    Memo2->Lines->Text = Memo2->Lines->Text + Memo1->Lines->Text;
    Memo2->Lines->SaveToFile("quiz.txt");
    

    Allerdings wie gesagt besser mit TStringList arbeiten.

    TStringList temp = new TStringList();
    temp->LoadFromFile("quiz.txt");
    temp->Text = temp->Text + Memo1->Lines->Text;
    temp->SaveToFile("quiz.txt");
    delete temp;
    

    Dabei sollte dir natürlich klar sein das es doppelte Einträge geben könnte sowie alte Einträge nicht bearbeitet werden können. Besser gleich die ganze Datei in die Controls laden, ganz bearbeiten lassen und zum Schluß wieder ganz speichern.

    aber trotzdem geht das bei form create net

    geht nicht ist keine ausreichende Fehlerbeschreibung. Jansens Code ist jedenfalls für sich gesehen korrekt.
    Desweiteren niemals OnCreate oder OnDestroy benutzen, stattdessen den Konstruktor/Destruktor.

    bis bald
    akari



  • Danke akari du hast mir schon wieder geholfen *freu* 🙂

    jo es klappt alles bestens so er hat zwar eine leerzeile unten aber die bleibt immer unten also is das egal ich bedanke mich vielmals und wünsche euch noch nen schönen abend...

    Bye Malcolm 🙂



  • malcolm18 schrieb:

    Danke akari du hast mir schon wieder geholfen *freu* 🙂

    jo es klappt alles bestens so er hat zwar eine leerzeile unten aber die bleibt immer unten also is das egal ich bedanke mich vielmals und wünsche euch noch nen schönen abend...

    Bye Malcolm 🙂

    also ist es egal? sorry, mir wäre das nicht egal. das prog sollte tun was ich will, nicht ich füge mich dem prog was dann so teils funzt. *grusel

    damit es sauber wird denke mal dran was ein zeilenumbruch ist 😉 mach den weg und dann hast es sauber 😃



  • ne das programm is so zu 100 % gut der macht zwar ne leerzeile aber wenn sie immer ganz unten bleibt is das ok 🙂

    aber danke schönen abend dir noch 🙂

    bye malcolm


Anmelden zum Antworten