Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[delphi] Długie teksty w tablicy..

31 Sie 2010 23:53 2000 8
  • Poziom 18  
    Witam!
    Potrzebuje zapisać w tablicy rekordy które będą miały powyżej 250 znaków i nie mogę znależć żadnego rozwiązania.
    Prosze o pomoc.
  • Poziom 28  
    Code:
    type
    
      TTestRecord = record
        Tekst: array[0..1023] of AnsiChar;
        Liczba: integer;
        [...]
      end;

    [..]

    var
      TestRecord: TTestRecord;
      Plik: file of TTestRecord;

    [...]

    TestRecord.Tekst:='Tekst ćwiczebny ;-)';
  • Poziom 18  
    var
    Tablica: array[0..1] of AnsiChar=('dłuuuugi tekst...','...');

    i błąd

    unit1.pas(33,40) Error: Incompatible types: got "Single" expected "Char"
    unit1.pas(33,40) Fatal: Syntax error, "," expected but "identifier ROCZNICY" found
  • Poziom 28  
    Myślałem, że chcesz zapisać rekordy do pliku a Ty chcesz jedynie w tablicy (array) umieścić długi tekst ?

    Code:
    var
    
      Tablica: array[0..1] of AnsiString; //lub WideString

    Tablica[0]:='jeden długi tekst';
    Tablica[1]:='kolejny...';

    lub

    var
      Tablica: array of AnsiString; //lub WideString

    SetLength(Tablica,2);
    Tablica[0]:='jeden długi tekst';
    Tablica[1]:='kolejny...';
  • Poziom 18  
    Code:
    var
    
      Tablica: array[0..1] of AnsiString;

    begin
    Tablica[0]:='tekst';
    Tablica[1]:='tekst';
    end;                   


    Utworzyłem taką tablicę i oto efekt. Jeśl tekst jest krótki to z tablicą nie ma problemu.


    unit1.pas(38,15) Error: Constant strings can't be longer than 255 chars
    unit1.pas(47) Fatal: There were 1 errors compiling module, stopping
  • Moderator Programowanie
    pipinet napisał:
    unit1.pas(38,15) Error: Constant strings can't be longer than 255 chars


    Problem nie leży w deklaracji tablicy zawierającej WideString czy AsciString !
    Jak mówi zacytowany opis błędu, pojedyncza stała String nie może być dłuższa niż 255 znaków.

    Jak przypisujesz wartość do tego elementu tablicy?
    Tak? :
    Code:
    Tablica[0]:='tekst .... (ileś-tam-set znaków) ....'; 

    Czy tak? :
    Code:
    Tablica[0]:='tekst .... (ileś-tam-set znaków, mniej niż 255) ....'+
    
                'tekst .... (ileś-tam-set znaków, mniej niż 255) ....'+
                'tekst .... (ileś-tam-set znaków, mniej niż 255) ....';

    A może próbujesz odczytać je z jakiegoś pliku?
  • Poziom 18  
    W taki sposób

    Code:
    Tablica[0]:='tekst .... (wklejomy miedzy cudzysłowami tekst) ....';


    Po prostu kopiuje np. tekst artykułu z serwisu i wklejam bez edytowanie, ponieważ porzebuje, żeby tekst był sformatowany tak jak go kopiuje,.
  • Pomocny post
    Moderator Programowanie
    I to właśnie generuje ten błąd.
    Albo zapisz potrzebne Ci String-i do pliku tekstowego i odczytuj je z niego, albo podziel ten bardzo długi string w kodzie programu na części, nie przekraczające 255 znaków. Tak jak w tym drugim kodzie.


    --EDIT--

    Jeżeli tak, to nie możesz takiego tekstu wprowadzić bezpośrednio do kodu programu!
    Albo zapiszesz te "skopiowane dane" do pliku tekstowego i odczytasz je z tego pliku, albo musisz "obrobić" każdą linijkę osobno.
  • Poziom 18  
    Rozumiem i dziękuję za pomoc.