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

[delphi] Długie teksty w tablicy..

pipinet 31 Sie 2010 23:53 1889 8
  • #1 31 Sie 2010 23:53
    pipinet
    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.

    0 8
  • #2 01 Wrz 2010 00:25
    Jaca
    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 ;-)';

    0
  • #3 01 Wrz 2010 00:48
    pipinet
    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

    0
  • #4 01 Wrz 2010 01:06
    Jaca
    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...';

    0
  • #5 01 Wrz 2010 08:56
    pipinet
    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

    0
  • #6 01 Wrz 2010 11:39
    arnoldziq
    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?

    0
  • #7 01 Wrz 2010 11:59
    pipinet
    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,.

    0
  • Pomocny post
    #8 01 Wrz 2010 12:01
    arnoldziq
    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.

    0
  • #9 01 Wrz 2010 12:18
    pipinet
    Poziom 18  

    Rozumiem i dziękuję za pomoc.

    0