AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Pointer auf PDF-Datei

Ein Thema von Delbor · begonnen am 14. Mär 2019 · letzter Beitrag vom 14. Mär 2019
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Pointer auf PDF-Datei

  Alt 14. Mär 2019, 17:50
Delphi-Version: 5
Hi Zusammen

Im Source meiner TPdf-Komponente sind folgnde Loaddocuument-Prozeduren deklariert:
Delphi-Quellcode:
    procedure LoadDocument(Data: Pointer; Size: Integer); overload;
    procedure LoadDocument(const Data: TBytes); overload;
    procedure LoadDocument(Data: TMemoryStream); overload;
Die Codevervollständigung von Delphi bietet mir aber nur folgendes an:
tpdfloaddocument.jpg
Ziel ist, ein PDF-Dokument zu laden und jeder Seite des Dokuments ein eigenes PdfViwerobject zuzuweisen.
Da ich im aktiven Umgang mit Zeigern wenig bis gar keine Erfahrung habe, denke ich mir das wie folgt:
  1. Loaddocument(PChar(Filename; Sizeof(FileName);
  2. Loaddocument(eigenes ByteArray);
  3. Loaddocument(eigenen Memorystream);
Mit dem Angebot der Codevervollständiung bleibt mir aber wohl gerade mal die schlechteste Variante,da ich durch den Einsatz eines Memorystreams das dokument zweimal im Speicher hätte.
Andrerseits wäre die Memorysream-Variante die für mich z.Z. einfachste.

Oder stehen mir die erste beiden Varianten auch zur Verfügung, wenn die Codevervoööständigung sie mir nicht anbietet?
Andrerseits: sindmeine Überlegungen zu den beiden ersten Varianten überhaupt richtig?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (14. Mär 2019 um 18:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Pointer

  Alt 14. Mär 2019, 17:52
Hast du deine Codevervollständigung mal richtig angeschaut (siehe dein Bild)?
Und die Version mit dem Pointer muss auf die Daten des Dokuments zeigen, nicht auf einen Dateinamen.
Unterm Strich braucht man eigentlich nur eine der Varianten.
Delphi-Quellcode:
var byteStream: TByteStream;
begin
  byteStream := TByteStream.Create;
  try
    byteStream.LoadFromFile(DocumentFilename);
    // Alles das Gleiche:
    Loaddocument(byteStream); // procedure LoadDocument(Data: TMemoryStream); overload;
    Loaddocument(byteStream.Bytes); // procedure LoadDocument(const Data: TBytes); overload;
    Loaddocument(byteStream.Memory, byteStream.Size); // procedure LoadDocument(Data: Pointer; Size: Integer); overload;
  finally
    byteStream.Free;
  end;
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (14. Mär 2019 um 17:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Pointer

  Alt 14. Mär 2019, 17:58
Bitte gib deinem Beitrag einen aussagekräftigen Titel, damit man ungefähr weiß um was es geht!
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Pointer

  Alt 14. Mär 2019, 18:01
Hallo,
Zitat:
Loaddocument(PChar(Filename; Sizeof(FileName);
Ich würde Length statt SizeOf benutzen.
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Pointer

  Alt 14. Mär 2019, 18:02
Wenn Du aus einer Datei laden willst, müsstest Du die Variante mit dem Stream verwenden.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Pointer

  Alt 14. Mär 2019, 18:04
Hallo,
Zitat:
Loaddocument(PChar(Filename; Sizeof(FileName);
Ich würde Length statt SizeOf benutzen.
Das ist so oder so falsch.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Pointer

  Alt 14. Mär 2019, 18:14
Hi Luckie
Bitte gib deinem Beitrag einen aussagekräftigen Titel, damit man ungefähr weiß um was es geht!
Ich hab das mal etwas angepasst, wobei das so eigentlich auch nicht ganz stimmt. Das Property Pdf.Document ist ein Pointer auf die Struktur Document der Pdfium.dll (wenn ich das jetzt richtig sehe).
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (14. Mär 2019 um 22:20 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Pointer

  Alt 14. Mär 2019, 18:22
Hizusammen

Hallo,
Zitat:
Loaddocument(PChar(Filename; Sizeof(FileName);
Ich würde Length statt SizeOf benutzen.
Das ist so oder so falsch.
Korrigiert mich, aber soviel ich weiss, liefert Lenght die Anzahl der Elementte/Zeichen und SizeOf die Grösse in Bytes. Ob SizeOf, wie von mir angewendet, auch wirklich die gesuchte Grösse liefert, ist eine andere Frage.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.400 Beiträge
 
Delphi 7 Professional
 
#9

AW: Pointer auf PDF-Datei

  Alt 14. Mär 2019, 18:29
Man kann da keinen Dateinamen übergeben, von daher ist es egal ob Length oder SizeOf. Beides ist falsch. Siehe dritten Aufruf von Loaddocument in Neutral Generals Post.
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Pointer

  Alt 14. Mär 2019, 18:33
Hi Neutral General
Hast du deine Codevervollständigung mal richtig angeschaut (siehe dein Bild)?
Du meinst die 3 Zeilen? Da hab ich offensichtlich falsch gekuckt...

Ansonsten: Vielen Dank für dein aufschlussreiches Beispiel!

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  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 17:12 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