logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Delphi] Dodanie bitmapy do pliku RES i wywołanie go.

Jaro15l_90r 04 Mar 2006 20:05 1971 3
REKLAMA
  • #1 2374601
    Jaro15l_90r
    Poziom 13  
    Posty: 84
    Pomógł: 4
    Witam, mam problem z załadowaniem pliku z źródła aplikacji do np. TImage.
    Tworzę sobie plik obrazki.rc a w nim takie linijki:
    BITMAPA1 BITMAP "obrazek1.bmp"
    BITMAPA2 BITMAP "obrazek2.bmp"

    Uruchamiam tryb poleceń, wrzucam obrazki do pliku obrazki.res za pomocą programu brcc32 i jest wszystko ok. W źródle projektu deklaruję {$R obrazki.res} i teraz jest problem: Jak wrzucić obrazek BITMAPA1 do Image1?
    Próbowałem na różne sposoby:
    var
    bitmapa1, bitmapa2: TBitmap;
    begin
    bitmapa1 := TBitmap.Create;
    bitmapa1.LoadFromResourceName(HInstance, 'BITMAPA1');
    bitmapa2 := TBitmap.Create;
    bitmapa2.LoadFromResourceName(HInstance, 'BITMAPA2');
    end;

    Wystarczy tylko tyle, żeby Delphi wyrzucił taki komunikat przy kompilacji: Project Project1.exe raised exception class EResNotFound with message 'Resource BITMAPA1 not found'..

    Jak to poprawnie załadować? Podajcie jakieś przykłady czy coś. Z góry dzięki i pozdrawiam.
  • REKLAMA
  • #2 2383276
    Jaro15l_90r
    Poziom 13  
    Posty: 84
    Pomógł: 4
    Wszystko OK, z obrazkami sobie poradziłem, a jak załadować np. dźwięk i go odtworzyć?

    A teraz mam inny problem: Mam formę, a na niej kilka pól EDIT i kilka MEMO. Dane z nich chciałbym zapisać do pliku INI, pola edit pójdą bez problemu, ale jak zapisać pole memo? Problem w tym, że memo jest wielolinijkowe i próbowałem przez delimited text, ale poprostu tragicznie działa ta funkcja :D niby zapisauje do pliku "linia 1","linia 2", ale wyświetla już to tak:
    linia
    1"
    linia 

    Jak inaczej zapisać to do pliku INI? Z góry dzięki
  • REKLAMA
  • #3 2383709
    Sam Sung
    Poziom 33  
    Posty: 2030
    Pomógł: 227
    Ocena: 605
    Możesz wprowadzić znak escape, np. \ i zapisywać enter jako \n. Albo użyć innego formatu niż ini :)
    Dźwięk (wav) z zasobów chyba można było odtwarzać przez PlaySound, ale nie jest to najlepsze wyjście przy dłuższych fragmentach. W ostateczności można wypakować zasób do pliku w tempie.
  • #4 2387010
    Jaro15l_90r
    Poziom 13  
    Posty: 84
    Pomógł: 4
    Z zapisem tekstu wielolinijkowego do pliku INI już sobie poradziłem, poniżej zamieszczam przykład, jakby ktoś miał z tym problemy:
    procedure TForm1.Button1Click(Sender: TObject); //Po kliknięciu na przycisk zapisu
    var
    I: integer;
    ciag: string;
    begin
      linie := memo1.Lines.Count;
      ciag := '';
      For I := 0 to linie -1 do
      ciag := ciag + memo1.Lines.Strings[I] + 'Ť'; //Do zaznaczenia nowej linii użyłem znaku Ť, możesz wybrać inny
    INI.WriteString('Pola', 'Memo1', ciag);
    linie := 0;
    end;
    
    procedure TForm1.Button2Click(Sender: TObject); //Po kliknięciu przycisku odczytu
    var
    linie, I: integer;
    ciag, odczyt: string;
    begin
    odczyt := INI.ReadString('Pola', 'Memo1', '');
    ciag := '';
    For I := 1 to length(odczyt) do
    begin
      If odczyt[I] <> 'Ť' then
      ciag := ciag + odczyt[I]
      else
      begin
      memo1.Lines.Add(ciag);
      ciag := '';
      end;
    end;
    end;

    Mam nadzieję, że się komuś przyda.
REKLAMA