AGB  ·  Datenschutz  ·  Impressum  







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

Magazinreader

Ein Thema von KC The Mole · begonnen am 31. Jul 2007 · letzter Beitrag vom 6. Aug 2007
Antwort Antwort
KC The Mole

Registriert seit: 29. Jul 2007
3 Beiträge
 
#1

Magazinreader

  Alt 31. Jul 2007, 19:06
Hallo hallo,
wie geht es euch? Hoffe gut ^^. Dann will ich mal mit dem schönen Standardsatz beginnen: Ich bin neu hier und brauchte mal die Hilfe von ein paar netten, erfahrenen Programierern.
Es geht um folgende Sache: Seit einem Schuljahr hab ich an meinem Gymnasium Informatik(12.Klasse, jetzt 13.), es macht mir ziemlich Spaß und ich hab sogar 13 Punkte geschafft, was ich vor allem meinem Projekt zu verdanken hab, dass ich euch schildern möchte.
Da ich die Wissenszeitschrift ,,Welt der Wunder" ziemlich interessant und cool finde, aber das Papier ziemlich empfindlich ist, scanne ich die Ausgaben alle nach und nach ein, speicher sie im .pdf-Format(nur sehr geringer Speicherplatz, trotzdem super Qualität) und lege für jede Ausgabe ein eigenes .rar-Archiv an(auch um Platz zu sparen).
Es ist mir selbst gelungen, in mein Delphi 5 (daneben hab ich noch TurboDelphi 06) die möglichkeit des Öffnens von PDF-Dokumenten einzubauen, habe die AcroPDF-Komponente benutzt + LoadFile('');-Befehl. Ich kann in meinem Programm die verschiedenen PDF-Seiten laden, durchlesen, Schlagwortsuche nach bestimmten Artikeln durchführen, Artikel direkt anwählen und einzelne Ausgaben anwählen.
Man kann mit dem Programm also ziemlich bequem die Magazine lesen. Soweit so gut, diese Version war für die Schule (für mehr hatte ich da keine Zeit ^^"). Der einzige Haken an der Geschichte ist die Tatsache, dass die PDF-Dokumente bisher nur geladen werden können, wenn man sie vorher manuell aus dem WinRar-Archiv entpackt hat.
Jetzt möchte ich aber gerne eine neue Version des Programms erstellen. Das neue Programm soll die PDF-Dokumente direkt aus dem .rar-Archiv laden und anzeigen können. Auf diese Weise könnte man es sich nämlich sparen, jedesmal die Archive von Hand zu entpacken, bevor man das Programm benutzt.
Mein Freund aus dem Informatikkurs meint, das würde nicht funktionieren, in eurem Forum habe ich mich aber ein bischen in der Beziehung umgehört und gelesen, dass man dafür vielleicht eine UnRar.dll benutzen könnte oder ein TAbbrevia oder so. Habe mir diese UnRar.dll auch besorgt, allerdings ist mir noch immer leider schleierhaft, wie ich überhaupt mein Ziel erreichen kann? Es wäre total nett von euch, wenn ihr mir dabei helfen könntet .
Also nochmal präzise das Problem: Möchte, dass mein Delphi-Programm die PDF-Dokumente direkt aus dem WinRar-Archiv laden und anzeigen kann (WinRar besitze ich übrigens).

Vielen Dank im vorraus,
KC
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Magazinreader

  Alt 31. Jul 2007, 19:13
Moin und Willkommen in der DP

guck dir mal http://www.del-net.com/frmDFUnRar.html an. Da gibt es eine Delphi-Komponenten, die die Benutzung der UnRar.dll vereinfacht, und eine Beispielanwendung mit Sourcecode. Funktioniert ab D5.

Gruß
Malte
Malte Schmitz
Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.

Entwickler des HTML-Editors MEdit (DP)
  Mit Zitat antworten Zitat
31. Jul 2007, 19:16
Dieses Thema wurde von "Phoenix" von "Multimedia" nach "Sonstige Fragen zu Delphi" verschoben.
Also Dateien entpacken ist eher kein Multimedia. Deswegen verschieb ich das mal.
KC The Mole

Registriert seit: 29. Jul 2007
3 Beiträge
 
#4

Re: Magazinreader

  Alt 2. Aug 2007, 11:42
Hallo,
danke für den Tip! I hab die Application in Delphi 5 eingebaut und sie scheint zu funktionieren (jedenfalls gibt es keine Fehlermeldung, wenn man ein Programm mit einem UnRar-Objekt startet).
Allerdings verstehe ich leider immer noch nicht, wie ich damit zu meinem Ziel komme... (aber ich bin ja auch noch nicht so lange beim programmieren dabei).
Prinzipiell sollte der Spaß ja so ablaufen, hab ich mir überlegt: Beim starten des Programms sollen die ersten beiden Seiten des ersten Magazins angezeigt werden, was mir außerhalb des .rar-Archivs keinerlei Schwierigkeiten bereitet. In Verbindung mit dem Archiv müsste das bedeuten, dass das Programm die ersten beiden PDF-Dokumente entpackt, von mir aus in den gleichen Ordner (war mir noch nicht klar) oder an einen anderen, virtuellen Ort und sie von dort dann in die beiden PDF-Objekte lädt, wo sie angezeigt werden.
Hört sich im Prinzip recht einfach an, finde ich, nur habe ich noch Schwierigkeiten mit den entsprechenden Befehlen zum öffnen der Daten aus dem Archiv und zu ihrer anschließenden Verwendung.

Im Pseudocode sieht das vermutlich so aus:

procedure TForm1.FormCreate(Sender: TObject);

Visiere Archiv1.rar an;
extrahiere Seite1.pdf;
extrahiere Seite2.pdf;
lade Seite1.PDF in AcroPDF1;
lade Seite2.PDF in AcroPDF2;

Und zumindest das visieren und extrahieren müsste doch im UnRar-Objekt ablaufen, wenn ich mich nicht irre?
Nur wie, kann mir das freundlicherweise einer erklären? Schließlich möchte ich ja auch lernen und dann anderen weiterhelfen ^^.
Mit PDF hab ich ja alles selbst ausgeknobelt, und auch mit anderen Objekten wie den verschiedenen Benutzungsmöglichkeiten etwa von Grundobjekten wie Panels. Aber mit UnRar bin ich noch ratlos...^^"
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Magazinreader

  Alt 2. Aug 2007, 21:00
Delphi-Quellcode:
var
  DFUnRar: TDFUnRar; //Variable, die die Instanz des Objektes enthalten soll
begin
  DFUnRar := TDFUnrar.Create(Self); //Instanz des Objektes erzeugen
  try //ab hier alle Fehler abfangen, damit das Objekt auf jeden Fall freigegeben wird
    with DFUnRar do
    begin
      FileName := ExtractFilePath(ParamStr(0)) + 'Test.rar'; //Dateiname des Archives angeben
      Directory := ExtractFilePath(ParamStr(0)) + 'Temp'; //Ausgabeverzeichnis (darf nicht auf \ enden!)
      ForceDirectories(Directory); //sicherstellen, dass temporäres Ausgabeverzeichnis auch existiert
      FileList.Clear; //Dateiliste der zu entpackenden Dateien leeren
      //Ist diese Liste leer, werden alle Dateien ins Ausgabeverzeichnis entpackt. Sonst nur die in der Liste enthaltenen Dateien.
      FileList.Append(Directory + '\readme.txt'); //Zu entpackende Dateien der Liste hinzufügen
      //Befindet sich die Datei in einem Unterverzeichnis im Archiv, so muss auch dieses mit angegeben werden
      Mode := DFRAR_EXTRACT; //Extract kann Dateien entpacken oder nur Inhaltsverzeichnisse erstellen (DFRAR_LIST)
      OverrideEvent := OR_NEVER; //Ist die Datei im Ausgabeverzeichnis bereits vorhanden, so auf keine Fall überschreiben (Alternative OR_ALWAYS)
      Extract; //Nun aber los ;-)
    end;
  finally
    DFUnRar.Free; //und nicht vergessen: Objekt auf brav wieder freigeben
  end;
Ich habe in dem Beispiel die Komponente nicht installiert und auf die Form "gezogen", sondern im Quelltext eine Instanz der Klasse erzeugt. Benötigt werden die Units DFUnRar.pas (muss in die uses-Klausel), die Unit unitUnRar.pas und die DLL unrar.dll, die alle im Programmverzeichnis liegen müssen.

Gruß
Malte
Malte Schmitz
Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.

Entwickler des HTML-Editors MEdit (DP)
  Mit Zitat antworten Zitat
KC The Mole

Registriert seit: 29. Jul 2007
3 Beiträge
 
#6

Re: Magazinreader

  Alt 6. Aug 2007, 10:49
Aha, vielen Dank, das werde ich mir mal unbedingt anschauen ^^.
  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 16:34 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