Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   CSV integrieren in Projekt (https://www.delphipraxis.net/215768-csv-integrieren-projekt.html)

DerMondistunsereSonne 4. Sep 2024 14:04

CSV integrieren in Projekt
 
Moin,

weiß nicht, ob es der richtige Teil des Forums ist, sonst einfach verschieben.

Ich möchte gerne 2 Listen (CSV-Dateien) in mein Prokjet integrieren, so dass diese mit dem Kompilat weitergegeben werden können. Als einzelne Datei möchte ich es nur ungerne machen.

Spricht etwas dagegen oder gibt es "bessere" Varianten? Die Listen ändern sich kaum.

Da die Listen allerdings sehr lang sind, möchte ich nicht eine separate Klasse daraus machen.

Sinspin 4. Sep 2024 14:44

AW: CSV integrieren in Projekt
 
Du brauchst keine extra Klasse um eine CSV Datei zu parken.
Wobei ich es durchaus sinnvoll finde gerade große Dateien extern liegen zu lassen.
Du kannst die Datei ja komprimieren und/oder verschlüsseln, wenn du glaubst sie vor angucken schützen zu müssen.
Oder mach Ressourcen-Strings draus und pack sie mit in die Exe. Kompimieren macht aber auch da Sinn.

Uwe Raabe 4. Sep 2024 14:45

AW: CSV integrieren in Projekt
 
Um die CSV-Datei als Ressource einzubinden, öffnest du im Menü Projekt - Ressourcen und Bilder. Dort über Hinzufügen... die Datei auswählen (dazu auf Alle Dateien... umstellen). Einen sinnvollen Ressoucenbezeichner angeben und, falls nicht schon geschehen, den Ressourcentyp auf RCDATA stellen.

Im Programm kannst du dann die CSV-Datei über einen TResourceStream laden. So geht das z.B. in eine TStringList:

Delphi-Quellcode:
var
  stream: TResourceStream;
  CSV: TStringList;
begin
  ...
  stream := TResourceStream.Create(HInstance, <Ressoucenbezeichner>, RT_RCDATA);
  try
    CSV.LoadFromStream(stream, TEncoding.ANSI); // oder was auch immer die Datei für ein Encoding hat.
  finally
    stream.Free;
  end;
  ...
end;

DerMondistunsereSonne 4. Sep 2024 14:49

AW: CSV integrieren in Projekt
 
Danke für die Antworten, ich probiere es mal!

himitsu 4. Sep 2024 15:56

AW: CSV integrieren in Projekt
 
Jo, anstatt selbst die Resource manuell einzubinden (eigene *.rc bzw. *.res und die womöglich noch manuell kompilieren, oder an der Projekt-Res rumfummeln), einfach die Ressource Datei im Ressourcenmanager einbinden
> Menü > Projekt > Ressourcen und Bilder
Aber im Ressourcenbezeichner keine Punkte, z.B. wenn den Dateinamen als Bezeichner nutzen möchte.
Der Bezeichner ist dann das, was du z.B. beim TResourceStream angibst.

Der Zugriff via TResourceStream bleibt also gleich.



Achtung: Beim Kompilieren direkt via DCC*.exe nicht,
aber beim Kompilieren in Delphi, sowie über MSBuild (*.dproj),
wird quasi im BeforeBuild immer die Datei erneut in der *.dres aktualisiert, welche anschließend in deiner *.DPR/DPK importiert wird.

DerMondistunsereSonne 4. Sep 2024 16:01

AW: CSV integrieren in Projekt
 
Danke für den Tipp, leider sind unsere Dateinamen sehr gewöhnungsbedürftig, da freut man sich schon mal über Klartext ;)

Hat übrigens alles geklappt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz