Lazarus 3.0 (2023.12.21.)
Letöltés

  • Oldal:
  • 1

TÉMA:

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 30 20:29 #2526

  • progmokus
  • progmokus profilkép
  • Haladó forumozó
  • Haladó forumozó
  • "Amit egyszer leírok..., azt lehet később átírom"
  • Hozzászólások: 78
  • Köszönetek: 16
Szutyok Office.....
Windows 10, VirtualBox(Ubuntu Mate 21.04)
Lazarus 2.2.6
CodeTyphon 8.2

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 30 20:23 #2525

  • Mck
  • Mck profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 26
  • Köszönetek: 0
És igeeeeeeeeeeen :)

A Unicode-os működik. Tab-bal határolt CSV-ként beolvasva teljesen kifogástalan.
(Az előbbi válaszom még természetesen a tab-bal határolt txt-re vonatkozott)

Köszönöm! :)

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 30 20:18 #2524

  • Mck
  • Mck profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 26
  • Köszönetek: 0
Kipróbáltam, a helyzet sajnos teljesen ugyanez maradt. A régi jó fc /b paranccsal összenézve a pontosvesszős csv és a tab-os txt fájl között bájtra pontosan és kizárólag a $3B vs $09 bájtokban van különbség.

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 30 20:18 #2523

  • progmokus
  • progmokus profilkép
  • Haladó forumozó
  • Haladó forumozó
  • "Amit egyszer leírok..., azt lehet később átírom"
  • Hozzászólások: 78
  • Köszönetek: 16
Vagy mégjobb Unikódos szövegként, azt tudja a 2016-os.
Windows 10, VirtualBox(Ubuntu Mate 21.04)
Lazarus 2.2.6
CodeTyphon 8.2
Megköszönték: Mck

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 30 19:51 #2522

  • progmokus
  • progmokus profilkép
  • Haladó forumozó
  • Haladó forumozó
  • "Amit egyszer leírok..., azt lehet később átírom"
  • Hozzászólások: 78
  • Köszönetek: 16
Ha már te mentheted, próbáld tabulátorral tagolt txt-be. Hátha annak más a kódolása.
Windows 10, VirtualBox(Ubuntu Mate 21.04)
Lazarus 2.2.6
CodeTyphon 8.2

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 30 19:49 #2521

  • Mck
  • Mck profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 26
  • Köszönetek: 0
Sebaj; jó tudni, hogy ott már van ilyen lehetőség. Köszönöm. :)

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 30 19:46 #2520

  • progmokus
  • progmokus profilkép
  • Haladó forumozó
  • Haladó forumozó
  • "Amit egyszer leírok..., azt lehet később átírom"
  • Hozzászólások: 78
  • Köszönetek: 16
Upsss. 2019-es Office van fent. Bocsesz.
Windows 10, VirtualBox(Ubuntu Mate 21.04)
Lazarus 2.2.6
CodeTyphon 8.2

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 30 19:21 #2519

  • Mck
  • Mck profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 26
  • Köszönetek: 0
Hogyan exportálsz Excelből UTF-8-as CSV-be? Nálam (úgy "Export", mint "Mentés másként" esetére) csak az ábrán mellékelt lehetőségek vannak (és a CSV paraméterezésére nincs opció, a mentés azonnal indul).
Mellékletek:

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 30 17:02 #2518

  • progmokus
  • progmokus profilkép
  • Haladó forumozó
  • Haladó forumozó
  • "Amit egyszer leírok..., azt lehet később átírom"
  • Hozzászólások: 78
  • Köszönetek: 16
Namost ha exelből exportálom CSV UTF8 tipusú fájlba akkor jó a dolog. A gond akkor van, ha nem te csinálod az exel exportálást.

Nekem szoktak jönni csv fájlok mindenféle cégektől, mindenféle kódolással (kinek milyen program exportál, sajnos a titkárnénik nem szokták nézni a kódolást csak sima csv-be mentenek), de nekem vonalkódok jönnek és én csak azt ellenőrzöm létezik e olyan vonalkód...
Windows 10, VirtualBox(Ubuntu Mate 21.04)
Lazarus 2.2.6
CodeTyphon 8.2

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 30 15:32 #2517

  • Mck
  • Mck profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 26
  • Köszönetek: 0
De van információtartalma! Köszönöm :)

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 30 15:26 #2516

  • progmokus
  • progmokus profilkép
  • Haladó forumozó
  • Haladó forumozó
  • "Amit egyszer leírok..., azt lehet később átírom"
  • Hozzászólások: 78
  • Köszönetek: 16
Jelentem, a TCSVDataset komponens is ugyanezt a problémát produkálja nálam, bár gondolom ez senkit sem vitt előrébb...
Windows 10, VirtualBox(Ubuntu Mate 21.04)
Lazarus 2.2.6
CodeTyphon 8.2

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 30 11:17 #2515

  • Mck
  • Mck profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 26
  • Köszönetek: 0
Mellékelem a "kódrészletet" - pontosabban a biztonság okáért (string változótípusok, {$H+} direktíva etc.) egy full programot, ami produkálja a hibát. Hozzá tartozik, amit most vettem észre, hogy a szöveg megcsonkítása a TStringList-ben nem történik meg ("csak" a kérdőjelekre alakítás), viszont a TStringGrid-ben már igen (pl. a 30-as tételszám környékén, a kenyerek), azaz a TStringGrid.LoadFromCSVFile még "tovább megy" ahhoz képest is, amit a TStringList.LoadFromFile csinál. A program egyébként eredendően StringGrid-et töltene, a StringList-et kizárólag teszt okáért néztem meg és hagytam bent. 

A kritikus unit (létezik, hogy a 'Source' formázás itt csak a teljes üzenetre adható ki? :o):


unit Nutri0;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Grids;

Const
  NCSVFName = 'Nutrients.CSV';

type

  { TForm1 }

  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

Procedure TListTest;
var
  CSVStrings: TStringList;
  CSVRow: integer;
  CSVStg: string;
begin
  CSVStrings := TStringList.Create;
  with CSVStrings do begin
    LoadFromFile (NCSVFName);

    for CSVRow := 0 to Count-1 do
      CSVStg := Strings[CSVRow];     // dummy művelet; csak a potenciális törésponthoz
  end;
end; // TListTest


procedure TForm1.FormCreate(Sender: TObject);
begin
  with StringGrid1 do begin
    RowHeights[0] := 44;

    // TListTest;    // Csak a teszt okáért; kiderítendő, hogy már a beolvasott sorok sem OK

    LoadFromCSVFile (NCSVFName, ';');
  end;
end;

end.
Mellékletek:

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 30 09:08 #2514

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 499
  • Köszönetek: 86
Légy szíves küldd el a kódrészletet ahol beolvasod az adatokat!
Továbbá lehet, hogy segítene a hibakeresésben egy olyan CSV fájlt amit rosszul olvas be (mellékletként).
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

1250-es kódtáblával készült szöveg beolvasása TStringList-be 2021 aug. 26 16:46 #2513

  • Mck
  • Mck profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 26
  • Köszönetek: 0
Problémám a következő:
Van egy CSV fájlom magyar szöveggel, amely fájl magyar Win10 magyar Exceljéből (Office 2016) exportálva, általam felülbírálhatatlanul, mindközönségesen 1250-es kódtáblával készült (így abban a hosszú ő és ű már kérdőjelre van cserélve, de ezt még hamar lehetne kézzel javítani; a több ékezetes karakter OK). A fájlt szeretném beolvasni Lazarusban egy TStringList-be, de a Lazarus már a beolvasás (LoadFromFile) során igyekszik rajta valami karakterkonverziót elkövetni, aminek következtében mire a szövegsorokhoz a saját kódommal hozzáférek, azokban már minden magyar ékezetes betű kérdőjelre van cserélve, illetve bizonyos ékezetes betűk (é, ó, ü, ...) beolvasásakor a szó hátralévő végét le is vágja (?!). Hogyan jelezhetném a Lazarusnak, hogy ezt 1250-es plain textként kéne átvennie (vagy akár röptében átkonvertálnia onnan, de jól)? 

A Lazarusom v2.0.10, FPC 3.2.0.

Ha van ötletetek, megköszönöm!

Ha ez valamit segít, az érintett TStringlist.Encoding.CodePage értéke 65001 (csak olvasható ...), ami tudomásom szerint az UTF-8 kódolást jelentené, csakhát a fájl nagyon nem az.
Mellékletek:

  • Oldal:
  • 1