Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   PDF's und Jpg im Datensatz speichern, vorschau und abrufen (https://www.delphipraxis.net/184443-pdfs-und-jpg-im-datensatz-speichern-vorschau-und-abrufen.html)

calikey 27. Mär 2015 09:33

Datenbank: clientdataset1 • Version: ? • Zugriff über: xml

PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
Hey Leute
Bei vielen fragen konnte ich mir schon ganz gut helfen nur hier versag ich als anfänger.

Plan:
Datei Pdf oder Jpg soll vom User im Datensatz gespeichert werden.
Es soll eine minivorschau des pdf oder jpg zusehen sein.
Beim klick soll es geöffnet werden zb mit adobe reader oder welches programm für die datei zuständig ist.

Meine Vorraussetzungen:
Emparcado rad studio xe7 trail
Kaum Delphi wissen bzw Programierkenntnisse
Ergeiz:-D
Ist mein erstes Programm.


so jetzt zu meinen fragen
wie bekomme ich es hin.

Aufgaben Plan:
1. Dem User eine Möglichekeit geben Dokumente auszuwählen und im datensatz zuspeichern.
2. Miniaturvorschau des Dokuments
3. Öffnen und drucken

Zu 1.
sollte das über button gelöst werden ? wenn ja wie sieht da der quell code aus? bzw was muss ich anpassen? habe mit bekommen das es in der datenbank ein blob feld sein muss ist das richtig oder hab ich mir das falsch her geleitet?
zu 2.
habe mir gedacht ein TDBimage zu benutzen. nur keine ahnung ob sinvoll oder ob es geht.
zu 3.
denke mal über onklick aber wie ist da der quellcode auch showmodal?

Ich danke schon mal allen die mir helfen werden.
bin auch für änderungs vorschläge offen :-)

Jumpy 27. Mär 2015 14:13

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
Ich schreibe nur mal ein paar Stichworte auf, die dir vielleicht helfen können.

Zitat:

sollte das über button gelöst werden ?
Das musst du ja wissen, wie der User das auslösen soll, oder was generell in deinem Programm passieren soll. Prinzipiell ist es aber sinnvoll dir Prozeduren und Funktionen zu erstellen, die das machen was du erreichen willst und dann im Button-OnClick diese Prozeduren zu verwenden/aufzurufen. Du solltest nicht im ButtonOnClick den ganzen Code unterbringen (falls die Frage so gemeint war).

Was du so brauchen könntest:
- Einen TOpenDialog um eine Datei auszuwählen, hier kannst du bereits Filter setzen, welche Dateitypen du haben möchtest (PDF/JPG).
- Für die Dateivorschau könnte man eine (modeal?) aufgehende weitere Form machen. Darauf brauchst du eine Möglichkeit JPG (TImage, TBitmap, ...) und PDF anzuzeigen. Beim PDF wirds schwieriger evtl. mit einer TWebbrowser Komponente.
- Um die Datei in einem passenden anderen Programm (ImageViewer, PDFReader) zu öffnen könntest du dir mal den Befehl ShellExecute anschauen. Falls die Datei zu diesem Zeitpunkt aus der Datenbak kommt, also nicht mehr auf der Platte liegt, müsstest du sie dazu evtl. erst mal temporär auf Platte speichern.
- Um die Datei in deiner "Datenbank" zu speichern, habe ich keine Ahnung ob und wie das geht. Es gibt hier schöne Beispiele wie das in einer "richtigen" Datenbank gehen würde, z.B. Firebird, via Blobstream, wie du schon vermutet hast. Aber in einer XML-Datei die du in einem ClientDataset öffnest, k.A. vielleicht geht es da genauso?

Zitat:

zu 3.
denke mal über onklick aber wie ist da der quellcode auch showmodal?
Was soll uns diese Frage sagen?

Sir Rufo 27. Mär 2015 14:22

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
Mal etwas zum Drumherum:
  • Deine Delphi-Version kannst du in deinem Profil angeben
  • Deine User-Skills (Ich bin Anfänger) kannst du in deiner Profil-Signatur angeben
  • Die verwendete Datenbank ist MyBase und der Zugriff erfolgt über
    Delphi-Quellcode:
    TClientDataSet
Schon verkürzen sich deine Fragen und beschränken sich auf das Wesentliche. Den Rest kann man ganz bequem deinem Profil/Signatur entnehmen.

Popov 27. Mär 2015 14:42

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
@calikey

Ich weiß nicht ob ich dich richtig verstanden habe, aber vorausgesetzt du willst eine Datei öffnen, dazu würde ich dir ShellExecute (Unit ShellApi) ans Herz legen.

calikey 31. Mär 2015 11:35

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
So hab bissel was gefunden und versucht es um zuschreiben aber delphi mag nicht. jetzt ist eure hilfe gefragt
Delphi-Quellcode:
unit doku;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.ExtCtrls, Vcl.ImgList,
  Vcl.ExtDlgs, Data.DB, Datasnap.DBClient, Vcl.DBCtrls, Vcl.StdCtrls,
  gtScrollingPanel, gtPDFViewer, gtPDFClasses, gtCstPDFDoc, gtExPDFDoc,
  gtExProPDFDoc, gtPDFDoc, gtPDFPrinter, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, DB;

type
  TForm2 = class(TForm)
    OpenDialog1: TOpenDialog;
    Button1: TButton;
    SaveDialog1: TSaveDialog;
    gtPDFViewer1: TgtPDFViewer;
    gtPDFViewer2: TgtPDFViewer;
    gtPDFViewer3: TgtPDFViewer;
    dbDemos: TClientDataSet; //von mir geändert
    tVenues: TClientDataSet; //von mir geändert
    tVenuesVenueNo: TAutoIncField;
    tVenuesVenue: TStringField;
    tVenuesCapacity: TIntegerField;
    tVenuesVenue_Map: TGraphicField;
    tVenuesRemarks: TMemoField;
    DataSource1: TDataSource;
    DBNavigator1: TDBNavigator;
    DBMemo1: TDBMemo;
    DBImage1: TDBImage;
    btLoadMemo: TButton;
    btSaveMemo: TButton;
    btLoadImage: TButton;
    btSaveImage: TButton;
    odBlob: TOpenDialog;
    sdBlob: TSaveDialog;
    ClientDataSet1: TClientDataSet;
    ClientDataSet1Arbeitsvertragimg: TBlobField;
    ClientDataSet1kopie1: TBlobField;
    ClientDataSet1kopie2: TBlobField;
    ClientDataSet1kopie3: TBlobField;
    ClientDataSet1kopie4: TBlobField;
    ClientDataSet1kopie5: TBlobField;
    ClientDataSet1kopie6: TBlobField;
    ClientDataSet1kopie7: TBlobField;
    ClientDataSet1kopie8: TBlobField;
    ClientDataSet1kopie9: TBlobField;
const
  TClientDataSet: String = '..\..\Data\Demos.abs';
    procedure FormCreate(Sender: TObject);
    procedure btLoadMemoClick(Sender: TObject);
    procedure btSaveMemoClick(Sender: TObject);
    procedure btLoadImageClick(Sender: TObject);
    procedure btSaveImageClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var

  Form2: TForm2;
  openDialog : TOpenDialog;

implementation

{$R *.dfm}

uses Unit1;

procedure TForm2.FormCreate(Sender: TObject);
begin
  dbDemos.DatabaseFileName := ExtractFilePath(Application.ExeName) + DataBaseFileName; //Hier Tclientdataset enthält kein databasefilename
  dbDemos.Open;
  tVenues.Open;
end;

procedure TForm2.btLoadMemoClick(Sender: TObject);
var
  FileStream: TFileStream;
  BlobStream: TStream;
begin
 if (odBlob.Execute) then
   begin
     tVenues.Edit;
     try
       BlobStream := tVenues.CreateBlobStream(tVenues.FieldByName('kopie1'),bmWrite);
       FileStream := TFileStream.Create(odBlob.FileName,fmOpenRead or fmShareDenyNone);
       BlobStream.CopyFrom(FileStream,FileStream.Size);
       FileStream.Free;
       BlobStream.Free;
       tVenues.Post;
     except
       tVenues.Cancel;
     end;
   end;
end;

procedure TForm2.btSaveMemoClick(Sender: TObject);
var
  FileStream: TFileStream;
  BlobStream: TStream;
begin
  if (sdBlob.Execute) then
    begin
      FileStream := TFileStream.Create(sdBlob.FileName,fmCreate);
      BlobStream := tVenues.CreateBlobStream(tVenues.FieldByName('kopie1'),bmRead);
      FileStream.CopyFrom(BlobStream,BlobStream.Size);
      BlobStream.Free;
      FileStream.Free;
    end;
end;

procedure TForm2.btLoadImageClick(Sender: TObject);
var
  FileStream: TFileStream;
  BlobStream: TStream;
begin
 if (odBlob.Execute) then
   begin
     tVenues.Edit;
     try
       BlobStream := tVenues.CreateBlobStream(tVenues.FieldByName('kopie1'),bmWrite);
       FileStream := TFileStream.Create(odBlob.FileName,fmOpenRead or fmShareDenyNone);
       BlobStream.CopyFrom(FileStream,FileStream.Size);
       FileStream.Free;
       BlobStream.Free;
       tVenues.Post;
     except
       tVenues.Cancel;
       raise;
     end;
   end;
end;

procedure TForm2.btSaveImageClick(Sender: TObject);
var
  FileStream: TFileStream;
  BlobStream: TStream;
begin
  if (sdBlob.Execute) then
    begin
      FileStream := TFileStream.Create(sdBlob.FileName,fmCreate);
      BlobStream := tVenues.CreateBlobStream(tVenues.FieldByName('kopie1'),bmRead);
      FileStream.CopyFrom(BlobStream,BlobStream.Size);
      BlobStream.Free;
      FileStream.Free;
    end;
end;

end.
was ist mein fehler oder besser wie muss ich das ändern?

Sir Rufo 31. Mär 2015 11:41

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
Ist das jetzt das Rätsel des Tages "Wo ist hier ein Fehler?" oder teilst du uns - irgendwann - mit was genau nicht funktioniert?

Ein Blick in den
Delphi-Quellcode:
uses
Teil lässt schon mal eine große Verwirrung erahnen.

calikey 31. Mär 2015 13:12

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin
  dbDemos.DatabaseFileName := ExtractFilePath(Application.ExeName) + DataBaseFileName; //Hier Tclientdataset enthält kein databasefilename
  dbDemos.Open;
  tVenues.Open;
end;
so noch mal das problem :-)
habe
Delphi-Quellcode:
dbDemos: TClientDataSet; //von mir geändert
tVenues: TClientDataSet; //von mir geändert
vorher
Delphi-Quellcode:
dbDemos: TABSDatabase;
tVenues: TABSTable;
da ich ja eine mybase datenbank habe dachte ich änder das mal und bis auf das eine meckert delphi ja auch nicht.aber wie sag ich da jetzt delphi das er da meine datenbank benutzen soll?

Bernhard Geyer 31. Mär 2015 13:21

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
gt ? Gnostice-Units?
Ist zwar jetzt nicht direkt das Problem. Aber stell dich schon mal darauf ein das beim Betrachten von realen PDFs dir die Anwendung öfter um die Ohren fliegen wird.
Die Implementierung von Gnostice ist mehr oder minder so aufgebaut das unbekannte Elemente als erstes zu einem Programmabsturz fürhen sollen.

Sir Rufo 31. Mär 2015 13:21

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
Wenn man in ganzen Sätzen spricht und dabei sehr genau in der Beschreibung ist, dann wird es für Aussenstehende einfacher zu verstehen.

Ich versuche es jetzt mal zu interpretieren:

Kann es sein, dass
Delphi-Quellcode:
tVenues
- was ja jetzt auch ein
Delphi-Quellcode:
TClientDataSet
ist - nicht geöffnet werden kann, weil das Programm nicht weiß wie bzw. woher, weil du diesem keinen Dateinamen (und damit keine Quelle, woher die Daten kommen sollen) gegeben hast?

Perlsau 31. Mär 2015 13:59

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
Mein lieber Calikey,

ganz offensichtlich bist du mit der Delphi-Programmierung nicht nur kaum vertraut, sondern scheinst im Grunde auch keine Ahnung davon zu haben, was irgendwelche Befehle in deinem unter Nr. 5 geposteten Quelltext zu bedeuten haben:
  1. hast du z.B. in den Uses etliche Units doppelt drin, und zwar in verschiedenen Versionen – einmal für neuere Delphi-IDEs und einmal für ältere Delphi-IDEs, u.a.: Windows, Messages, SysUtils, Classes, Graphics, Forms, Dialogs und etliche mehr. Woher soll dein Programm denn wissen, welche Unit zu verwenden ist?
  2. kann man nirgendwo im bereits genannten Post erkennen, was wo wann angeblich nicht funktioniert.
  3. solltest du dir erst gar nicht angewöhnen, sämtliche Algorithmen in den Ereignisbehandlungsmethoden unterzubringen.
  4. ist die einzige Frage die, was dein Fehler sei. Dein Fehler ist der Versuch, ohne die vorausgegangene Aneignung von Basiskenntnissen zu versuchen, eine funktionierende Anwendung zu entwickeln. Das muß zwangsläufig in die Hose gehen.
  5. Dieser Punkt mit den fehlenden Basiskenntnissen wird durch dein Posting Nr. 7 noch einmal bekräftigt und bestätigt: Du kopierst einfach irgendwelche Quelltexte, die du nicht mal ansatzweise verstehst, zusammen, und hoffst, das Delphi automatisch den Rest erledigt, indem es errät, was du eigentlich tun willst und das Programm deinen unausgesprochenen Wünschen entsprechend erstellt. So funktioniert das nicht!
Daher möchte ich dir an dieser Stelle einige gutgemeinte Vorschläge unterbreiten:
  1. Arbeite ein paar der zahlreich verfügbaren Delphi-Grundlagen-Tutorials durch, um überhaupt erst einmal die Programmiersprache zu erlernen.
  2. Übe dich danach in dem bereits Erlernten durch die Entwicklung einfacher, auf deinen bisherigen Kenntnissen aufbauenden Programmen.
  3. Arbeite dann weiterführende Tutorials durch, die dir z.B. den Umgang mit Datenbanken vermitteln.
  4. Übe dich auch hier wieder ausgiebig im Programmieren, indem du das neu Erlernte in eigenen kleinen Programmen anzuwenden suchst.

Wenn du dagegen weiterhin so vorzugehen beabsichtigst, wie du das hier sehr anschaulich vorgeführt hast, wirst du erfahrungsgemäß eher früher als später das Handtuch werfen und dich in Zukunft nicht mehr mit Programmieren beschäftigen wollen, weil du durch die falsche Herangehensweise gelernt hast, daß Programmieren nur Frust und Enttäuschung bietet. Es ist auch kaum möglich, dir hier im Rahmen des Forums diese fehlenden Grundlagen beizubringen, denn erstens wäre das sowieso nur eine Wiederholung bereits existierender Tutorials und zweitens äußerst zeitintensiv, wie z.B. dieser Thread in der Entwickler-Ecke zeigt. Die meisten Leute hier müssen nämlich nebenher arbeiten und haben daher nicht die Zeit und Muse, die der Admin des Entwicklertreffs in diesem Fall bewundernswerterweise aufzubringen in der Lage ist.

blondervolker 31. Mär 2015 14:39

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
Hallo,

so dumm ist er garnicht...:thumb:

Er tut nur so... Mit Datenbanken weiss er schon Bescheid.

Schau nochmal in Absolute Database bei den Beispielen nach!
Da gibt es doch ein schönes Beispiel. "sdblob" und "odblob".

Ist doch aus der "unit Main".:zwinker:

Wie wäre es mit "ABSMain" und:
const
DataBaseFileName: String = '..\..\Data\Demos.abs';

Sir Rufo 31. Mär 2015 14:44

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
Es war mir nicht bekannt, dass ein
Delphi-Quellcode:
TClientDataSet
auch eine Absolut-Datenbank lesen/verarbeiten kann. Einfach nur den Dateinamen angeben und das wars. Super einfach. Man lernt doch nie aus :roll:

blondervolker 31. Mär 2015 16:33

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
Ich meinte meinen "Senf" zu seinen 1.Beitrag!

"Meine Vorraussetzungen:
Emparcado rad studio xe7 trail
Kaum Delphi wissen bzw Programierkenntnisse
Ergeiz
Ist mein erstes Programm.":roll:

Sir Rufo 31. Mär 2015 17:33

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
Zitat:

Zitat von blondervolker (Beitrag 1295592)
Ich meinte meinen "Senf" zu seinen 1.Beitrag!

"Meine Vorraussetzungen:
Emparcado rad studio xe7 trail
Kaum Delphi wissen bzw Programierkenntnisse
Ergeiz
Ist mein erstes Programm.":roll:

Zum einen fehlte dann der Bezug zu diesen Zeilen und der Bezug zum Problem fehlt gänzlich, denn er arbeitet mit MyBase und greift mit einem ClientDataSet darauf zu. Das steht im ersten Beitrag.

Wie soll ihm also da deine Code-Zeile helfen? :gruebel:

blondervolker 31. Mär 2015 18:21

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
:gruebel:

calikey 31. Mär 2015 20:39

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
So jetzt hab ich endlich mal bissel zeit.
Also versuch das jetzt mal etwas aufzuarbeiten.

@Bernhard Geyer
ja Gnostice. habs mir zum testen geladen weil ich dachte das ist ja im grunde was ich suchen würde.
wenn das aber sehr instabil ist, dann bin ich sehr gern für eine alternative offen.

@Perlsau
Ich bin ein Mensch der am besten durch versuch und irrtum lernt. Das was ich grad vorhabe ist im grunde eine erweiterung zu meiner selbst gebastelten Personal Datenbank. Ich Habe mit bekommen das Die von mir gewählte Mybase datenbank nicht unbedingt die optimalste lösung ist. Da ich aber bereits unsere datenbank mit allen daten von unseren gesamten Mitarbeitern gefüllt habe sehe ich es als schwierig an die datenbankform zuändern ohne die daten zuverlieren. ich find es schon interessant was eigenes zu kreieren und damit dann zu arbeiten, denn wenn dann was nicht funktioniert kan man nur auf einen sauer sein und zwar auf sich selbst. Ich weiß das ich noch nicht alle Grundlagen und Vorgänge verstanden habe, aber ich lerne schnell und wenn ich tipps und kleine hilfestellungen bekomme bei sachen die ich nicht versteh kann ich mir auch oft was herleiten. dafür ist denke ich mal auch so ein forum da man versteht etwas nicht und benötigt hilfe.
zb hier du sagst ich habe zu viele uses die alte und auch neue. ok dann schau ich mir die uses an was die tun und ob ich diese brauchen könnte. ohne diesen hinweis wären die dring und unbeachtet geblieben. danke an dieser stelle. zeit intensiv ja das kann ich mir vorstellen. deswegen dränge ich keinen falls und keine ist gezwiungen etwas zu schreiben oder zu Antworten, wer helfen mag ist aber sehr willkommen und ich habe kein Problem mit hinweisen oder verbesserungen.

@blondervolker
Ja MyBase :-) Der code Stammt von einer Absolut Database Wenn ich mich nicht täusche. und ich versuche ihn so zu ändern das er mit der MyBase Funktioniert. :-)

@Sir Rufo
Ja ich bin nicht einfach :-) aber danke das du verstehst was ich mein :-)

Perlsau 31. Mär 2015 22:32

AW: PDF's und Jpg im Datensatz speichern, vorschau und abrufen
 
Was du hier machst, hat mit Lernen aber eher wenig bis gar nichts zu tun, denn du kopierst nur irgendwelche Code-Teile zusammen und hoffst, daß das dann irgendwie läuft. Da es das erwartungsgemäß nicht tut, fragst du hier im Forum nach, und aufgrund deiner fehlenden Grundkenntnisse nützen dir die Erklärungen nicht wirklich was bzw. bringen dich nicht weiter, weil du sie nicht verstehst. Letztlich läuft es wie so oft darauf hinaus, daß man dem Fragesteller den benötigten Code schreibt oder, was wahrscheinlicher ist, einfach nicht mehr antwortet.

Dieses absolute Unverständnis zeigt sich auch in dieser Antwort wieder: Du schreibst, du hättest bereits eine Datenbank mit allen Mitarbeitern gefüllt und willst daher die Datenbankform nicht ändern, weil die Daten sonst verloren wären. Das kann ich nicht nachvollziehen. Wie sollten die Daten verlorengehen, wenn du sie aus der alten Datenbank ausliest und in die neue Datenbank einträgst? Mir sagt diese deine Sichtweise vor allem, daß es dir an grundsätzlichem Verständnis mangelt, nicht nur was Datenbanken betrifft, sondern überhaupt was den Umgang mit Daten betrifft. Geht denn ein Text in einer Textdatei (*.txt) verloren, wenn du nun eine Word-Datei (*.doc) anlegst, um dort den Inhalt der Textdatei reinzukopieren?

Ein Fachforum ist nicht wirklich dazu da, um jedem Anfänger erstmal die Basiskenntnisse zu vermitteln. Das kannst du im Grunde nur selber machen. Man weiß ja gar nicht, wo man ansetzen soll, wenn man feststellt, daß im Grunde jeder Erklärungsversuch auf Unverstädnis stößt, weil eben diese Grundkenntnisse fehlen.

Auch an deinem Textverstädnis scheint es zu hapern, denn du behauptest, ich hätte gesagt, du hättest zu viele Uses. Nein, das habe ich nicht gesagt, sondern daß du doppelte Units (und nicht Uses) im Uses-Abschnitt stehen hast. Du weißt aber gar nicht, was das bedeutet, auch nicht, wenn ich dir erkläre, daß dein Programm gar nicht wissen kann, welche Units zu verwenden sind, wenn du da zwei Versionen derselben Units (für ältere und für neuere Delphi-Versionen) drinstehen hast. Und genau das meinte ich: Man kann eigentlich überhaupt keine Fehlerbehebung machen, ohne dir auch gleich den vollständigen Code zu liefern, denn du begreifst die Hinweise aufgrund fehlender Basiskenntnisse erst gar nicht. Wenn du jemanden suchst, der dir ein Programm schreibt, dann kostet das was, denn schließlich leben die meisten hier davon und haben mit Sicherheit keine Lust, dir deinen gesamten Code zu schreiben, nur weil du letztlich, um es mal deutlich zu sagen, zu faul bist, dich um die Grundlagen zu bemühen, so daß du hilfreiche Hinweise auch zu verstehen in der Lage bist.

Hast du dir nun die Uses angeschaut und herausgefunden, was die tun und ob du sie "brauchen könntest"?

Tatsächlich gibt es keine Uses zum anschauen, denn Uses ist lediglich ein Befehl, der eine Sektion einleitet, die mit Semikolon abgeschlossen wird. Innerhalb dieser Sektion stehen Unit-Bezeichner, die in der jeweiligen Unit Verwendung finden. Wenn du z.B. eine Komponente auf deiner Form platzierst, fügt Delphi automatisch die benötigten Units deiner Uses-Klausel hinzu.

Das war jetzt ein Beispiel für Grundkenntnisse ... die dir fehlen, was deine eigentlich völlig unnötige Verwirrungen weiter verstärkt. Wie gesagt: Mach dir mal die Mühe und arbeite ein paar Anfänger-Tutorials durch, damit zu zumindest das Grundlegende verstehen kannst. Du wirst dabei lernen,
  • was eine Unit ist,
  • wozu Uses-Klauseln dienen,
  • was es mit den weiteren Sektionen in einer Unit auf sich hat,
  • wie eine Unit überhaupt strukturiert ist,
  • wie man Methoden implementiert,
  • und vieles mehr, was dir bislang völlig fremd zu sein scheint, aber fürs Programmieren unbedingte Voraussetzung ist.

Du schreibst, du hättest kein Problem mit Hinweisen oder Verbesserungen. Offenbar hast du aber doch ein Problem, wenn der Hinweis darin liegt, deinem Mangel an Basiskenntnissen abzuhelfen. Du kannst nicht die Programmiersprache allein durch Versuch und Irrtum lernen – mit dieser Methode versuchst und irrst du in zehn Jahren noch immer. Es gibt hier in der Tat ein paar solcher Kandidaten, die sind hier schon seit Jahren angemeldet und fragen immer mal wieder auf demselben Niveau, das du hier zeigst. Da antwortet dann auch kaum noch jemand, weil es sich nicht lohnt, denn schließlich will keiner hier seine Perlen vor die Säue werfen ... :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 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