Delphi7-tel képösszeállítás fájlokból - hogyan?
2018-12-14T10:22:06+01:00
2018-12-19T17:49:19+01:00
2022-08-11T09:00:30+02:00
Tomi_T2
Sziasztok!
Egy olyan nagy feladatom van, hogy Delphivel egy olyan képet állítsak össze, melynek három színösszetevője (R, G és B) három különböző állományban van.
Nagy vonalakban eddig az az algoritmus állt össze a fejemben erről, hogy létrehozom a képet, aztán három változóba kiolvasom a három színösszetevőt, és abból elvileg összeállítható a kép a Delphi beépített RGB függvénye használatával.
Na de XLSX, XML és CSV fájlokból is olyan egyszerű kiolvasni a hasznos adatokat, mint mondjuk egy egyszerű .txt fájlból? AssignFile, Reset, aztán kiolvasás a fájl végéig és végül bezárás? Tudom, az XLSX, XML és CSV is végsősoron szöveges állományok, de biztosan vannak sajátosságaik adatfeldolgozási szempontból. És ezek több MB-os fájlok, amiknek csak egy része tartalmaz hasznos adatot (pl. csak az első oszlop az Excel fájlból).
Nem tudom, mennyire összetett ez a problémám, hogy meghaladja-e egy egyszerűbb válaszadás kereteit, de valami segítő rávezetést kérnék erre a feladatra, mert a világhálót böngészve sajnos nem találtam hasznos példaprogramokat ehhez.
Mutasd a teljes hozzászólást!
Létre kell hoznod egy TBitmap-ot. Aztán a Bmp.Canvas.Pixels-el tudod pontonként megadni a képet. 

var Bmp: TBitmap;

begin
  Bmp:= TBitmap.Create;
  Bmp.Width:= W;  // a képed szélessége pontokban
  Bmp.Height:= H;  // a képed magassága pontokban
  // Aztán kiovasgatod a pontokat, és beírod.
  Bmp.Canvas.Pixels[ X, Y]:= RGB( r, g, b);
end;
Mutasd a teljes hozzászólást!

  • Az xlsx egy bezippelt xml. De szerintem egyszerűbb egy ado táblába beolvasni és úgy kezelni, mint kitömöríteni és xml-ként beolvasni, aztán soronként kielemezgetni. Az ado táblában megvan az első oszlop, és nem kell vele csinálni mást, csak végig menni a táblázaton.

    Az xml-t és a csv-t beolvashatod egy tstringlist-be. Szerintem az kényelmesebb mint a textfile kezelés. De te tudod. Nem ismered a fájl formátumokat? Nyisd meg egy szövegszerkesztővel, és látod hogy hogy néz ki, mi van benne, ezek olvasható fájlok. Gyakorlatilag az különbözteti meg egy text fájltól, hogy meghatározott rend szerint vannak benne az adatok. A stringlistben soronként kiszedheted amit kell. Olyan eljárásokat kell csak ismerned, mint a Copy, a Delete, a Pos, PosEx. A feladat szerintem elég egyszerű. Megcsinálni viszont csak úgy lehet, ha megvannak a fájlok, és tudod hogy mit és honnan.
    Mutasd a teljes hozzászólást!
  • Köszönöm a választ! Akkor jó lesz, ha egyszerű szöveges állományos beolvasást csinálok?
    A tartalmát már megnéztem a Delphin kívül e három fájlnak és az első oszlopok illetve a green node-ok tartalmazzák a hasznos infókat, amik rendes számok, míg a többi úgy látom, hexadecimális adat.
    Namost ha kiolvasom a rendes számokat, akkor azok fognak utalni a Delphin belül a hexadecimális számokra, amikből összeáll a kép, vagy hogy működik ez, miután beolvastam? Van a Delphiben valami függvény, ami az RGB adatokból összeállít egy képet?
    Mutasd a teljes hozzászólást!
  • Létre kell hoznod egy TBitmap-ot. Aztán a Bmp.Canvas.Pixels-el tudod pontonként megadni a képet. 

    var Bmp: TBitmap;

    begin
      Bmp:= TBitmap.Create;
      Bmp.Width:= W;  // a képed szélessége pontokban
      Bmp.Height:= H;  // a képed magassága pontokban
      // Aztán kiovasgatod a pontokat, és beírod.
      Bmp.Canvas.Pixels[ X, Y]:= RGB( r, g, b);
    end;
    Mutasd a teljes hozzászólást!
  • Amúgy ha ez valami iskola példa, mert hogy egyáltalán nem életszerű, inkább valami gyötrésnek látszik, azt is figyelembe kellene venned, hogy milyen eszközöket tanulsz, ezzel együtt, mert gondolom hogy azokat felhasználva kellene megoldani.
    Mutasd a teljes hozzászólást!
  • Értem és köszi. Ez a pár sor tényleg sokat segít; a többi hozzászólásoddal együtt el is fogadom megoldásként.
    Egyébként akkor az XLSX-et nem is lehet egyszerű szövegként beolvasni? Annak nincs valami jellegzetes elválasztókaraktere az oszlopok között?
    Mutasd a teljes hozzászólást!
  • Fogd a .xlsx fájlt, nevezd át .zip-pé, és tömörítsd ki. Lesznek benne olvasható fájlok is.
    Mutasd a teljes hozzászólást!
abcd