Avatar billede fedtoere Praktikant
10. december 2004 - 16:46 Der er 5 kommentarer og
1 løsning

Objekt hjælp i Builder 5.0, skal bruge et "streaming" tekst felt

Jeg ønsker hjælp til at finde det rette objekt i Borland Builder 5.0.
Jeg vil gerne opnå at have et felt hvori jeg kan tilføje tekst, en form for "streaming tekst".
Dvs hvis jeg vil tilføje tekst "add", så bliver det skrevet til i enden. Som et almindeligt vindue i et almindeligt c program, hvor man blot benytter "cout << ..." eller printf("... \n").
Det skal ikke være et listefelt eller lign og jeg vil også gerne have hjælp til hvordan jeg skriver til feltet med newline osv.
Det vigtige er at det ikke er et label felt hvor man vha caption overskriver det gamle indhold, men tilskriver ny tekst i "bufferen" i stedet.
Avatar billede bertelbrander Novice
11. december 2004 - 03:11 #1
Det bedste (/letteste) jeg kan komme på er:

Opret en TMemo på din form, kald den f.ex. Memo1

Lav en klasse:

class MyStreamer : public std::stringstream
{
public:
  MyStreamer(TMemo *aMemo) : Memo(aMemo) {}
  ~MyStreamer()
  {
      std::string::size_type Pos;
      std::string Text = str();
      while((Pos = Text.find('\n')) != std::string::npos)
      {
        Memo->Lines->Add(Text.substr(0, Pos).c_str());
        Text = Text.substr(Pos + 1);
      } 
  }
private:
  TMemo *Memo;
};

Så kan du tilføje til enden af memo'en med:

  MyStreamer Streamer(Memo1);
  Streamer << "Foo: " << 4 << std::endl << "Bar: " << 8 << std::endl;

Man kan godt lave en streamer klasse der streamer til destinationen "on-the-fly", men det er mere end almindlig bøvlet.
Avatar billede bertelbrander Novice
11. december 2004 - 16:17 #2
Hvis man bedre kan lide printf:

  AnsiString S;
  S.printf("GGG: %d", 12);
  Memo1->Lines->Add(S);
Avatar billede fedtoere Praktikant
11. december 2004 - 17:52 #3
Jeg har løst mit problem på en mere simpel metode end jeg havde regnet med fra starten af.
Jeg har dog benyttet mig af TMemo objektet som du foreslog, samt kontrol af dette. Derfor giver jeg dig point hvis du ligger et svar, din hjælp har hjulpet :-)

mvh
fedtoere
Avatar billede bertelbrander Novice
11. december 2004 - 19:38 #4
Jeg samler ikke på point
Avatar billede fedtoere Praktikant
11. december 2004 - 20:59 #5
Ok, så siger jeg tak for hjælpen.
Avatar billede fedtoere Praktikant
19. september 2005 - 12:24 #6
Lukker spørgsmål da det er løst, da bertelbrander ikke samler point tager jeg dem retur.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester