Datei öffnen und im RichEdit ausgeben



  • #include <vcl.h>
    #include <iostream.h>
    #include <fstream>
    
    void __fastcall TForm1::Open1Click(TObject *Sender)
    {
    if (OpenDialog1->Execute())
     {
      ifstream datei (OpenDialog1->FileName.c_str());
        for (int i =0; i<= 100; i++)
         {
          char c;
          AnsiString x = datei.get();
          RichEdit1 -> Lines -> Add(x);
         }
      }
    }
    

    hier gibt mir das programm den inhalt der datei aus,
    wenn ich auf das menue unter open drücke wähle ich eine datei aus die dann geöffnet wird,
    aber wie kann ich:

    1- die BYTES der ganzen datei die ich auswähle herausfinden,
    bzw.: die größe der datei in BYTES
    2- und/oder wie greife ich auf die BYTES zu, char ??,
    um dies anstatt die 100 in der for schleife anzugeben
    zb.:

    String Wort; Wort.Length();
    

    3- wie sage ich der schleife das in der datei ein zeilenumbruch ist und
    dies dann in der ausgabe genauso gemacht wird,

    wenn es immer nocht niemand verstanden hat, ich will einen EDITOR machen,
    so wie NOTEPAD unter Windows, nur ist wichtig zu wissen wo ein bestimmtes zeichen steht,

    edit: hatte ein fehler

    ifstream datei (OpenDialog1->FileName.c_str());
        for (int i =0; i<= sizeof(datei); i++)
         {
          string c;
          c = datei.get();
          AnsiString x = c.c_str();
          RichEdit1 -> Lines -> Add(x);
         }
    

  • Mod

    Hallo

    ist das nicht einfacher

    RichEdit1->Lines->LoadFromFile ("xxx.yyy");
    

    MfG
    Klaus



  • Ja stimmt,
    aber wie kann ich dann auf bestimmte Zeichen zugreifen ??



  • Hallo

    siehe BCB-Hilfe zu TRichEdit::Lines, insbesondere TRichEdit::Lines::Strings.

    bis bald
    akari



  • for (int i = 0; i<=100; i++)
          {
       //    Form2 -> RichEdit1 -> Lines -> Add(Form1 -> RichEdit1 -> Lines -> Strings[i]);
           RichEdit1->Lines->Strings[i];
          }
    

    jetzt habe ich weider das problem mit der länge der datei,
    dort wo 100 steht soll doch stehen bis wo der durchlaufen soll,

    und wenn ich eine datei mit NOTEPAD öffne sieht dort der inhalt anders aus als
    bei mir, zumidest wenn ich nicht *.txt dateien öffne, da steht vielleicht viel müll drinne aber das will ich so haben,

    txt dateien gibt er mir ohne probleme aus,

    aber soweit thx, habt mir geholfen,
    hätte eigentlich selber kommen können, aber naja, danke



  • Hast du dir die Hilfe auch intensiv angeschaut? Sonst wärest du bestimmt über TStrings::Count gestolpert. Und wenn du weißt, dass du einen AnsiString zurückbekommst, kannst du gleich noch mit die Länge einer Zeile bestimmen.



  • Hallo,

    versuch mal

    RichEdit1->Lines->Count...


Anmelden zum Antworten