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 pamiętasz hasła

lub ?

 

Nie masz jeszcze konta? Zarejestruj się

Nakarm Pajacyka