Dodaj do ulubionych

dopisywanie tekstu w delphi

14.07.06, 20:46
problem jest nastepujacy: mam tablicę znaków, powiedzmy, że jest ona
15-elementowa. Chciałbym jej elementy umieścić w RichEdit, lecz nie każdy w
nowej linii lecz obok siebie, w jednym wierszu, oddzielone spacją. korzystałem
już między innymi z RichEdit.Lines.Insert(0,tablica[i]) ale efekt byl
analogiczny jakbym uzył RichEdit.Lines.Add(tablica[i]). Czy może mi ktoś
podpowiedzieć jak mam wstawić tekst w jednym wierszu?
Obserwuj wątek
    • 2uboot2 Re: dopisywanie tekstu w delphi 15.07.06, 14:52
      Programuje w C++ Builder, więc składnia języka inna, lecz mechanizmy komponentów
      identyczne.
      Kwestia pierwsza. Tekst z tablicy w jednej linijce.
      Tablica piętnastoelementowa.
      char znaki[15]={'a','1','2','b','c','d','e','z','f','v','n','h','9','q','c'};
      RichEdit1->Lines->Add(znaki); (W Delphi zdaje sie zamiast strzałek są kropki);
      //Wyswietla a12bcdezf.... itd w jednej linijce
      Żeby wyswietlić to z odstępami szerokości jednej spacji przynajmniej dla mnie
      najwygodniej jest zadeklarować nową tablicę (o dwa razy większej wielkości niż
      ta pierwotna) i w miejsca nieparzyste skopiować znaki z tablicy znaki, a w
      parzyste skopiować spacje tzn ' ';
      char tablica_ze_spacjami[31];
      for(i=0,j=0;i<31,j<15;i+=2,j++)
      tablica_ze_spacjami[i]=znaki[j];
      //teraz spacje
      for(i=1;i<31;i+=2)
      tablica_ze_spacjami[i]=' ';
      No i wyświetlenie
      RichEdit1->Lines->Add(tablica_ze_spacjami);
      Nie wiem czy jest to dobrze, ale od biedy można uznać.
    • negevmc Re: dopisywanie tekstu w delphi 15.07.06, 19:02
      kostucha999 napisał:

      > problem jest nastepujacy: mam tablicę znaków, powiedzmy, że jest ona
      > 15-elementowa. Chciałbym jej elementy umieścić w RichEdit, lecz nie każdy w
      > nowej linii lecz obok siebie, w jednym wierszu, oddzielone spacją.


      // na TForm1 mam RichEdit1: TRichEdit, Edit1: TEdit, Button1: TButton
      // to jest implementacje Button1.OnClick
      procedure TForm1.Button1Click(Sender: TObject);
      var
      aChars: array[1..15] of char;
      i: integer;
      iLen: integer;
      sLine: string;
      begin


      // wypelniam tablice pustymi znakami
      for i := Low( aChars ) to High( aChars ) do
      aChars[ i ] := #0;

      // maxymalny iterator pentli, w ktorej wypelniac bede tablice
      // uwaga MinIntValue znajduje sie w unit math, ktory trzeba dodac do uses
      iLen := MinIntValue( [ High(aChars), Length( Edit1.Text ) ] );

      // kopiuje text ze znajdujacego sie na TForm1 pola edit
      // do tablicy (tylko 15 pierwszych znakow
      for i := 1 to iLen do
      aChars[ i ] := Edit1.Text[ i ];

      // dotad tylko tworzylem tablce z Edit1
      // rozumiem, ze Ty juz ja masz gotowa wiec wszystko dotad mozesz opuscic



      // incjuje string, ktory potem dodam do RichEdit
      sLine := '';

      // kopiuje znaki z tablicy do zmiennej sLine: string
      // po kazdym znaku jesli nie jest #0 dodaje spacje
      for i := Low( aChars ) to High( aChars ) do
      begin
      if aChars[ i ] <> #0 then
      sLine := sLine + aChars[ i ] + ' ';
      end; // for i := Low( aChars ) to High( aChars ) do

      // dodaje caly string do RichEdit
      RichEdit1.Lines.Add( sLine );

      // ce'est tout ;-)


      end;
    • kostucha999 Re: dopisywanie tekstu w delphi 16.07.06, 16:08
      dziękuję 2uboot2 i negevmc za poświęcenie mi waszego czasu. skorzystałem z
      waszych rad i wsazówek. ostatecznie jednak stworzyłem coś własnego, może nie
      jest to elegancki sposób, ale działa. z punktu widzenia całego projektu chyba
      najbardziej funkcjonalny.

      procedure TForm1.Button1Click(Sender: TObject);
      var
      TF:TextFile;
      i:Integer;
      begin
      // do pliku zostaja zapisane wyrazy ktore sa w RichEdit1
      // Write -> pozwala na zapis w jednym wierszu

      AssignFile(TF,'plik.txt');
      try Rewrite(TF);
      for i:=0 to RichEdit1.Lines.Count - 1 do
      Write(TF,RichEdit1.Lines[i]+' ');
      finally
      CloseFile(TF);
      end;
      // teraz tylko wystarczy wczytac tekst z pliku do RichEdit1
      RichEdit1.Lines.LoadFromFile(plik.txt);
      end;

      jeszcze raz Wam dziękuję i pozdrawiam.
      • negevmc Re: dopisywanie tekstu w delphi 17.07.06, 10:13
        kostucha999 napisał:

        > może nie jest to elegancki sposób, ale działa. z punktu widzenia całego
        > projektu chyba najbardziej funkcjonalny.

        No nie znamy tego punku widzenia więc trudno wyrokować ale widzę, że w
        pierwotnym wpisie nie ujawniłeś nam prawdziwych celów ;-)
        Masz już rich edit i jakieś w nim słowa a nie tablice pojedyńczych znakow (char)
        chodziło jedynie o zapisanie ich w jednej linii.
        Mam dwie uwagi do Twojego rozwiązania:
        1. przeciw:
        rzeczywiście rozwiązanie zapewne działające ale mało eleganckie.
        Znowu nie wiem o co chodzi w całym projekcie ale wciąganie w banalny problem
        zbioru dyskowego...! A co z tym zbiorem później robisz ? Nie wymazujesz ?
        A co jeśli użytkownik nie ma odpowiednich uprawnień do tworzenia zbiorów.
        Powinenes przynajmniej zrobić to kartotece przewidzianej dla zbiorów
        tymczasowych np. c:\Documents and Settings\nazwa użytkownika \ local Settings
        \temp czy coś podobnego -> wskazuje na to zmienna systemowa TEMP albo TMP
        Czy nie lepiej jest po prostu w taki sam sposób w jaki zapisaujesz do zbioru
        stworzyć jedną zmienną typu string ?

        var
        s: string;
        begin
        s := '';
        for i:=0 to RichEdit1.Lines.Count - 1 do
        s := s + RichEdit1.Lines[i]+' ';

        RichEdit1.Lines.Clear;

        RichEdit1.Lines.Add( s );

        end;

        i po wszystkim.

        2. za:
        zawsze to własne rozwiązanie ;-)

        Pozdrawiam
        • kostucha999 Re: dopisywanie tekstu w delphi 17.07.06, 18:17
          Miałem napisać program, który zlicza wyrazy i zwroty w podanym tekście. Przy
          zliczaniu ma pomijać spójniki i przyimki oraz wyrazy, które będą znajdować się
          bazie wyrazów pomijanych. Ponadto jest plik zawierający zwroty, które w tym
          tekście mają być wyszukane i zliczone. wyniki mają być przedstawione na dwa
          sposoby: 1 -> wypisanie słów + ilość występowania każdego z nich, a na końcu
          zwroty; 2 -> wypisanie w wierszu tylko samych słów i zwrotów bez liczb
          oznaczających ilość ich występowania.
          Dodatkowo dostałem inforamcje, iż program nie musi być "idiotoodporny". Program
          będzie pracował na domowym kompie.

          Pozdrawiam

Nie masz jeszcze konta? Zarejestruj się

Nie pamiętasz hasła lub ?

Nakarm Pajacyka