AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Mehrere Stringlisten/Bilder in eine Datei

Mehrere Stringlisten/Bilder in eine Datei

Ein Thema von Frischling · begonnen am 21. Apr 2007 · letzter Beitrag vom 23. Apr 2007
Antwort Antwort
Frischling

Registriert seit: 4. Dez 2006
24 Beiträge
 
Delphi 7 Enterprise
 
#1

Mehrere Stringlisten/Bilder in eine Datei

  Alt 21. Apr 2007, 11:15
Hi Leute,
ich arbeite derzeit an einer Film-Bibliothek, die mir neben dem Titel noch das Cover und eine Beschreibung anzeigt. Bis jetzt habe ich immer für jedes Cover eine .jpg-Datei und für jede beschreibung eine .txt-Datei genommen.
Nun habe ich aber in meinem Data-Ordner schon an die 300 Dateien und die Übersichtlichkeit lässt wirklich zu wünschen übrig, geschweige denn von dem Platz der verschwendet wird.


Also habe ich mich mit ini-Files beschäftigt, aber bin bei der Recherche auf ein problem gestoßen:

Ini-Files sind von der Größe her begrenzt!

Dann bin ich auf XML-Dateien gestoßen, verstehe aber nur Bahnhof, weil ich noch recht wackelig auf den Beien bin(in Bezug auf Programmierung).

Meine Frage lautet daher:


Welches Datei-Format ist am effizientesten zu realisieren, wenn folgende Bedingungen erfüllt sein müssen:

1. Das erste Wort der Liste ist der Titel des Films.
2. Alle nachfolgenden Zeilen gehören zur Beschreibung(bis zum nächsten Titel).
3. Leerzeilen müssen berücksichtigt werden.

Das soll dann so aussehen:

---------------------------------
Film 1;

Jahr: xxxx
Genre: xxxx
Regie: xxxx


Inhalt
Zeile 1
Zeile 2
Zeile n

-----------------------------------
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Mehrere Stringlisten/Bilder in eine Datei

  Alt 21. Apr 2007, 11:18
-Datenbank
-Ressourcen-DLL
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Mehrere Stringlisten/Bilder in eine Datei

  Alt 21. Apr 2007, 12:14
Wie wärs, wenn du das einfach alles zusammenwirfst?

Du baust eine Datei, die so aufgebaut ist:

Zuerst ein Cardinal, das die Anzahl der Filme angibt. Dann für jeden Film ein Cardinal mit der Länge der Textpassage und eines mit der Länge des Coverbildes. Dann klebst du Beschreibung und Coverbild einfach aneinander, und dann kommen wieder die nächsten zwei Cardinals für die Längenbeschreibung etc. etc.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Frischling

Registriert seit: 4. Dez 2006
24 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Mehrere Stringlisten/Bilder in eine Datei

  Alt 21. Apr 2007, 12:36
@mkinzler:

Ich habe mir jetzt 2 DDL-Tuts angesehen, verstehe da aber leider NOCH nichts. Wie schon erwähnt bin ich noch ein Frischling in Sachen Delphi.

@ DGL-luke:
Das klingt ziehmlich kompliziert und ist auch garnicht für mein Programm notwendig.

Ich wähle in der ListBox einen Film aus und dann soll nach diesem Titel in der Datei gesucht werden und die Beschreibung in ein memo-Feld eingelesen werden. Die Bilder sollen dann auf dieselbse Weise geladen werden(bilde sollten in einer extra Datei liegen).

Kann ich dafür nicht einfach eine Text-Datei nehmen, den Titel suchen und dann alles, was zwischen diesem Titel und dem Nächsten vorkommt, einlesen? An die Bilder will ich dann erstmal garnicht denken(wäre ja schon froh, wenn die vielen txt-Dateien weg wären).
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: Mehrere Stringlisten/Bilder in eine Datei

  Alt 21. Apr 2007, 14:37
Hi,
also erstmal zum Thema "einfachstes Format", so etwas wird es imho nicht geben. Liegt nur daran, dass einfach viel zu relativ ist (gibt bestimmt Menschen die finden XML einfach).
An sich empfiehlt es sich, wenn Du Auszeichnungen/Tags verwendest. Diese markieren eine bestimmte Stelle und treffen eine Aussage über den Inhalt. Das hat den Vorteil, dass die Reihenfolge der Tags und deren Anzahl beliebig sind. Findest Du ein Tag, dass Du nicht kennst, dann ignorierst Du es einfach.
Sowohl Ini-Dateien als auch XML folgen dem Prinzip. Bei einer Ini-Datei gibt es Auszeichnungen einer Sektion ([SektionsName]) und untergeordneter Schlüssel-Wertpaare. Die Größenbeschränkung bei Ini-Dateien lässt sich durch andere Units als IniFiles umgehen, such einfach mal nach Hier im Forum suchenBiginiFile (oder so ähnlich).
Bei XML geht die Strukturierung nur etwas weiter. Hier gibt es Tags, die durch spitze Klammern angezeigt werden. Innerhalb dieses Tags steht dann irgendein String, das ganze wird dann als öffnendes Tag bezeichnet. Zu jedem öffnenden Tag gehört auch immer ein schließendes Tag. Dieses sieht eigentlich aus, wie das öffnende, nur dass ein / vor den Namen gesetzt wird
Code:
<Tag>
  ...
</Tag>
Alles was zwischen dem öffnenden und schließenden Tag steht, ist diesem einen Tag untergeordnet. Man betrachtet ein XML-Dokument i.d.R. als ein Baum. Jedes Tag stellt dabei einen Knoten dar. Für Filme könntest Du z.B. einen Baum folgender Form haben:
Code:
Filme
  - Film1 
    - Jahr xxx
    - Genre xxxx
    - Regie
      - Person A
      - Person B
      - Person C
    - Inhalt bla
  - Film2 
   - Jahr xxxx
   - Genre xxx
   - Regie
      - Person A
    - Inhalt bla
....
(erinnert vielleicht ein wenig an den Dateibaum, den Dir der Explorer anzeigt, nur hier für Filme )

Das ganze kannst Du dann entsprechend in XML umsetzen:
Code:
<Filme>
  <Film>
   <Name>
     1
   </Name>
   <Jahr>
     xxxx
   </Jahr>
   <Genre>
     xxxx
   </Genre>
   <Regie>
     <Person>
        <Name> Blubb </Name>
        <Vorname> Blä </Name>
     </Person>
     <Person>
        <Vorname> Foo </Name>
        <Name> Bar </Name>
     </Person>
   </Regie>
  </Film>
</Filme>
Gut, ist nicht die 100%ige Entsprechung, aber die Idee dürfte klar sein. Dass ich im letzten Beispiel jetzt Person noch in Name und Nachname unterteile soll nur zeigen, dass Du hier nicht in der Strukturierung beschränkt bist. Zudem steht es Dir frei, ob Du das schließende Tag in die gleiche Zeile oder in eine beliebige andere schreibst. Wichtig ist nur, dass alles was zwischen dem öffnenden und schließenden Tag steht diesem Tag zugeordnet wird.
Eine weitere wichtige Regel für XML ist dann noch, dass Du nur einen Wurzelknoten hast (hier wäre das Filme). Mehrere Knoten sollten auf dieser Ebene (also nach </Filme>) nicht vorhanden sein.
Das wäre (vereinfacht) schon alles, was für XML wichtig ist. Es gibt noch jede Menge Dinge rund um XML, wie Namensräume, Transformationen, Schemata und DTD, die sind aber hier noch nicht wichtig.
Zudem können XML-Dateien auf den ersten Blick etwas abschreckend wirken, davon solltest Du Dich aber nicht einschüchtern lassen. XML ist ein wirklich einfaches Format! Eine Datei, in der Form der hier geposteten könntest Du so an einen XML-Parser geben, der daraus dann einfach einen Baum für Dich erzeugt.
Du hättest jetzt die Wurzel (Filme). Hier kannst Du abfragen, was zwischen dem öffnenden und schließenden Tag steht (sowohl roher Text als auch Kindtags), sowie das aktuelle Tag heißt. In diesem Fall wäre nur ein Kindtag zu finden. Dieses ist wiederum die Wurzel eines Teilbaums, Du kannst also ganz analog vorgehen.
Du würdest also als erstes das Tag Filme bekommen. Dem ist das Tag Film untergeordnet
Das Tag Film hat nun die Kindtags Name, Jahr, Genre, Regie.
Jetzt kannst Du diese Tags nacheinander durchgehen:
Das Tag Name enthält den String 1
Das Tag Jahr enthält den String xxxx
Das Tag Genre enthält den String xxxx
Das Tag Regie enthält die Kindtags Person und Person
...

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Frischling

Registriert seit: 4. Dez 2006
24 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Mehrere Stringlisten/Bilder in eine Datei

  Alt 21. Apr 2007, 14:49
Ich danke dir Der_Unwissende,
ich habe das Grundprinzip verstanden. Dann werde ich mich mal auf die vielen Tutorials werfen, die es gibt.

Wenn ich nicht weiterkomme(passiert zu 99,9% ), melde ich mich wieder.

Grüße
Frischling


EDIT:
Soweit ich das verstehe muss ich extra Objekt-Bibliotheken runterladen(z.B.ThaXML-Library). Habe diese Sammlung auch mal geöffnet, aber gleich Fehlermeldungen bekommen.

Kann ich mein Vorhabren also nicht mit den Standard-Mitteln von Delphi7 realisieren?
  Mit Zitat antworten Zitat
Frischling

Registriert seit: 4. Dez 2006
24 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Mehrere Stringlisten/Bilder in eine Datei

  Alt 22. Apr 2007, 10:13
So, die ersten Problemchen stellen sich mir in den Weg und SuFu konnte mir nicht weiterhelfen.
Ich habe eine XML-Datei erstellt und laut Christopher Harms Tutorial geladen.

Delphi-Quellcode:
procedure TForm1.Create(Sender: TObject);
begin
  fAppPath:=ExtractFilePath(Application.ExeName);

  xmlDoc:=CoDOMDocument40.Create;
  xmlDoc.setProperty('NewParser',true);
  if not FileExists(fAppPath + DATABASE_FNAME) then
   begin
     xmlDoc.LoadXml('<?xml version="1.0"?><Filme></Filme>');
   end
    else
     xmlDoc.Load(fAppPath + DATABASE_FNAME);

  if xmlDoc.parseError.errorCode <> 0 then
    begin
      MessageDlg('Die XML-Datei ist nicht korrekt!' + #13#10
      + 'Das Prog wird nun beendet!', mtError, [mbOk], 0);
      Application.Terminate;
   end;

  if xmlDoc.documentElement.nodeName <> 'Filmethen
   Application.Terminate;


end;
Prob 1: Wenn ich die XML-Datei lösche, meckert das Programm aber nicht. Auch wird keine neue
XML-Datei erstellt, wie es im Tut steht(Oder wird sie nur in den Speicher geladen und "noch"
nicht gespeichert?).

Prob 2: Eines der SubNodes soll später die Beschreibung beinhalten. Also suche ich nach einer
Möglichkeit in SubNode 1 einen String aus-/einzulesen und in SubNode 2 einen TString
aus/-einzulesen.


Hier noch der Inhalt der XML-Datei:

Delphi-Quellcode:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<Filme>
      <Film>
         <Titel></Titel>
           <Beschreibung></Beschreibung>
      </Film>
      <Film>
         <Titel></Titel>
           <Beschreibung></Beschreibung>
     </Film>
</Filme>
P.s.
Ich verwende das für das Tut nötige MS XML 4.0
  Mit Zitat antworten Zitat
Frischling

Registriert seit: 4. Dez 2006
24 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Mehrere Stringlisten/Bilder in eine Datei

  Alt 22. Apr 2007, 14:24
So, hab mal bissel rumgewurschtelt und versucht Titel und Beschreibung jeweils in eine ListBox auszugeben.
Mit den Titeln klappt das wunderbar, aber die Beschreibung wird nicht angezeigt
Wenn ich einen Titel in der ListBox anklicke soll die dazugehörige Beschreibung in einr anderen ListBox angezeigt werden.


Delphi-Quellcode:
Procedure TForm1.UpdateList;
Var
 Movies1: IXMLDOMNodeList;
 subNode1: IXMLDOMNode;
 i: Integer;

begin
movies1:=xmlDoc.DocumentElement.selectNodes('Film');
ListBoxTitel.Items.Clear;
ListBoxTitel.Items.BeginUpdate;

For i:=0 to movies1.length -1 do
  begin
   subnode1:=movies1[i].selectSingleNode('Titel');
   ListBoxTitel.Items[i]:=SubNode1.text;
  end;
ListBoxTitel.Items.EndUpdate;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
UpdateList;
end;

procedure TForm1.ListBoxTitelClick(Sender: TObject);
Var
 Movies2: IXMLDOMNodeList;
 subNode2: IXMLDOMNode;
 i:Integer;
begin

movies2:=xmlDoc.DocumentElement.selectNodes('Beschreibung');
ListBoxBeschreibung.Items.Clear;
ListBoxBeschreibung.Items.BeginUpdate;

 For i:=0 to movies2.length -1 do
  begin
   subnode2:=movies2[i].selectSingleNode('Beschreibung');
   ListBoxBeschreibung.Items[i]:=SubNode2.text;
  end;
ListBoxBeschreibung.Items.Endupdate;
end;
Bis jetzt sollten, bei klick auf einen Titel, ALLE Beschreibungen angezeigt werden. Aber es tut sich nichts.

Hat jemand eine Idee, wie ich....

1. ...die Beschreibungen erstmal anzeigen lassen kann und...

2. ...dann die zum titel gehörende Beschreibung anzeigen lassen kann?

Da ich bis gestern mit dem Wort "XML" nichts anfangen konnte, bin ich ja schon froh soweit gekommen zu sein.
  Mit Zitat antworten Zitat
Frischling

Registriert seit: 4. Dez 2006
24 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Mehrere Stringlisten/Bilder in eine Datei

  Alt 23. Apr 2007, 14:57
Kann mir wirklich keiner helfen, oder stelle ich mich zu **** an?

XML-Dateien scheinen für meine Zwecke ideal zu sein, aber sind sie auch noch zu abstrakt in der Anwendung. D.h. ich komme wirklich nicht weiter
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz