AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

200+ Texte in ein memo laden

Ein Thema von Spectre · begonnen am 16. Feb 2013 · letzter Beitrag vom 27. Feb 2013
Antwort Antwort
Spectre

Registriert seit: 29. Jan 2013
Ort: Hamburg
65 Beiträge
 
Delphi XE2 Architect
 
#1

200+ Texte in ein memo laden

  Alt 16. Feb 2013, 23:11
Hallo!

Ich code ein geographielernprogramm.
Ich möchte wenn ein jeweiliges land auf der karte angewählt ist, den dazugehörigen text (hauptstadt, länderspezifische informationen etc) in einem memo anzeigen. die texte zu jedem land hab ich schon in über 200 txt dateien abgespeichert...

wenn ich nicht 200+ memos erstellen will und die txt dateien dem user nicht zur verfügung stellen will( via loadfromfile) wie binde ich diese ein? wenn ich nicht recht irre nutzt eine .res file auch nur quellen oder?
am liebsten wäre es mir, ich könnte alle 200 texte in eine dll laden und auf diese zugreifen, dann müsste ich nur die exe und die dll bereitstellen, lässt sich das machen?
wenn ja ne idee wie?


bin für alle vorschläge offen, wie würdet ihr das problem lösen haufenweise texte in nur einem memo darzustellen?

dank!!

lg aus hamburg
robin
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: 200+ Texte in ein memo laden

  Alt 16. Feb 2013, 23:23
Wenn du alle benötigten Dateien zipst, mußt du nur ein Zip-File übergeben ...

Was spricht dagegen, mit Text-Dateien zu arbeiten? Du benennst die Textdateien nach dem Land (z.B. Deutschland.txt) und lädst die nach Bedarf mit LoadFromFile in dein Memo.

Du könntest aber auch eine Datenbank einsetzen, wenn du nicht willst, daß der Anwender die Texte manipulieren kann. Eine DLL zu verwenden halte ich für unnötig und zudem für zu kompliziert, vor allem, wenn du Korrekturen an den Texten vornehmen mußt.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

AW: 200+ Texte in ein memo laden

  Alt 17. Feb 2013, 06:36
Mein Vorschlag wäre hier eine Datenbank (z.B. SQLite) zu nehmen, wie mein Vorredner es schon vorgeschlagen hat oder die Texte in eine Resources packen und dann die Resources entweder ins Programm oder doch in eine DLL. So brauchst Du bei der Resources nur die DLL oder die EXE auszutauschen, wenn Du Änderungen vornimmst.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.359 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: 200+ Texte in ein memo laden

  Alt 17. Feb 2013, 08:13
Hi,

der Weg über Datenbank ist sicher der bessere.
Aber es ist auch relativ easy mit einer DLL machbar.

Eine Datei z.B. laender.rc

dort für jede Textdatei eine Zeile: TEXT_DE RCDATA "deutschland.txt"

Eine dpr:
Delphi-Quellcode:
library land_data;
{$R *.res}
begin
end.
kompilieren:
brcc32.exe laender.rc
dcc32 land_data.dpr

In den Sourcen:

Delphi-Quellcode:
procedure DeinForm.LadeMemo(ABlockName: string);
Var
  AStream: TResourceStream;
  AHandle: THandle;
  ADllFileName: string;
begin
  ADllFileName := 'land_data.dll';
  AHandle := LoadLibraryEx(PChar(ADllFileName), 0, LOAD_LIBRARY_AS_DATAFILE);
  if AHandle > HINSTANCE_ERROR then
  begin
    try
      AStream := TResourceStream.Create(AHandle, ABlockName, RT_RCDATA);
      try
        if AStream.Size > 0 then
        begin
          AStream.Position := 0;
          DeinMemo.LoadFromStream(AStrem);
        end;
      finally
        AStream.Free;
      end;
    finally
      FreeLibrary(AHandle);
    end;
  end
  else
    //
    { TODO : Fehlerausgabe }
end;
Aufruf z.B.
LadeMemo('TEXT_DE');

Alles ungetestet...


Frank
Frank Reim

Geändert von dataspider (17. Feb 2013 um 08:16 Uhr)
  Mit Zitat antworten Zitat
WInfo

Registriert seit: 3. Jan 2009
36 Beiträge
 
#5

AW: 200+ Texte in ein memo laden

  Alt 17. Feb 2013, 09:32
Moin Moin Robin,

denke dein Programm sollte einigermassen robust sein, somit würde ich vor der Verwendung von +200 Textdateien Abstand halten. Wenn Du die Texte nicht direkt in deine App integrieren möchtest und wohl noch weitere Infos dazu kommen, bleiben prinzipiell die folgenden Möglichkeiten über:
  • mitliefern in einer DB (bspw. SQL Lite)
  • über eine Ini Datei
  • Textdatei mit speziellen Trennzeichen (bspw. @@ für neues Land)
  • XML Datei
  • DLL bspw. Ressourcen DLL
  • als Binary (Serialisierung)

Für die Serialisierung noch kurz eine Erläuterung, du brauchst eine Objektstruktur für die Darstellung deiner Länder in deinen Programm. Diese rüstest du dann mit zwei Methoden aus, Save2Stream und ReadFromStream. In die App welche du auslieferst, nimmst du nur die Methode ReadFromStream auf. Dann baust du dir noch ein zweites Prog mit der selben Objektstruktur (eine gemeinsame Codebasis), welches du mit der Pflege der Daten betraust, diese schreibt dann über Save2Stream alle benötigten Daten in eine Datei (kannst binär, als XML, in eine DB oder wie auch immer) ausgeben.

That's all.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: 200+ Texte in ein memo laden

  Alt 17. Feb 2013, 10:20
Ich würde die eine Textdatei wählen. Wobei natürlich eine gewisse Struktur genutzt werden sollte (z.b. xml).

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 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