Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateityp fehler (https://www.delphipraxis.net/103230-dateityp-fehler.html)

Seppel 12. Nov 2007 18:21


Dateityp fehler
 
Jedesmal wenn ich das Bild öffne, das auch exisitiert^^ dann kommt dateiendungsfehler.
Aber eigentlich müsste alles richtig sein das Bild wird ja auch gelesen und in die Listbox eingetragen also müsste er es eigentlich auch öffnen können.

Ablauf:
Zu beginn auf Formular 1 ist die Datenbank anwendung wenn man dann jemanden auswählt kann man sich BIlder über ihn ansehen(Bilder die in seinem Ordner sind, z.B. ID 2) Lesen tut er die pics auch nur ich kann sie net in einer Imagekomponente anzeigen.
Delphi-Quellcode:
unit Unit4;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit1, StdCtrls, ExtCtrls, jpeg;

type
  TForm4 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form4: TForm4;

implementation

{$R *.dfm}
procedure ListAllPics(sPath: string; List: TStrings);
var Rec: TSearchRec;
begin
  List.BeginUpdate;
  List.Clear;
  if sPath[Length(sPath)] <> '\' then
    sPath := sPath + '\';
  if FindFirst(sPath + '*.*',faAnyfile,Rec) = 0 then
    begin
      repeat
        if (AnsiLowerCase(ExtractFileExt(Rec.Name)) = '.jpeg') or
            (AnsiLowerCase(ExtractFileExt(Rec.Name)) = '.jpg') or
                 (AnsiLowerCase(ExtractFileExt(Rec.Name)) = '.JPG') or
           (AnsiLowerCase(ExtractFileExt(Rec.Name)) = '.JPEG') then
          List.Add(Rec.Name);
      until FindNext(Rec) <> 0;
      FindClose(Rec);
    end;
  List.EndUpdate;
end;
procedure TForm4.FormCreate(Sender: TObject);
begin
ListAllPics('C:\Dokumente und Einstellungen\Sebastian\Desktop\Programmieren\Mysqlconnect\Pics\'+Form1.edID.text ,Listbox1.Items);
end;

procedure TForm4.Button1Click(Sender: TObject);
begin
image1.Picture.LoadFromFile('C:\Dokumente und Einstellungen\Sebastian\Desktop\Programmieren\Mysqlconnect\Pics\'+Form1.edID.text +Listbox1.Items.Text);
end;

end.

DeddyH 12. Nov 2007 18:27

Re: Dateityp fehler
 
Zum Einen fällt mir auf, dass folgende Fälle nie eintreten können:
Delphi-Quellcode:
(AnsiLowerCase(ExtractFileExt(Rec.Name)) = '.JPG') or
(AnsiLowerCase(ExtractFileExt(Rec.Name)) = '.JPEG')
Und evtl. hilft es, wenn Du zunächst ein JPEGImage erzeugst und das dann dem Image.Picture zuweist.

Seppel 12. Nov 2007 18:35

Re: Dateityp fehler
 
Funzt auch net.
Wenn ich statt dem Form1.edID1.text weglasse und statt dessen z.B. 2 schon bei dem Pfad reintippe dann funzt das ganze(habs aber erst in ner Combobox getestet müsste aber auch mit net Listbox gehen, also glaube ich dass er irgendwie da was falsch macht.

DeddyH 12. Nov 2007 18:40

Re: Dateityp fehler
 
*Huch*, das hatte ich gar nicht gesehen. ListBox1.Items.Text gibt Dir den gesamten Text aller Items zurück. Versuch es mal mit ListBox1.Items[ListBox1.ItemIndex].

Muetze1 12. Nov 2007 18:50

Re: Dateityp fehler
 
Hä? Was denn nun? Wo diskutierst du denn jetzt? Hier oder hier?

Seppel 12. Nov 2007 18:51

Re: Dateityp fehler
 
Jo das wars, hab eben auch noch was bemerkt.
Delphi-Quellcode:
image1.Picture.LoadFromFile('C:\Dokumente und Einstellungen\Sebastian\Desktop\Programmieren\Mysqlconnect\Pics\'+Form1.edID.text +'\' +Listbox1.Items[ListBox1.ItemIndex]);
Jetzt habe ich nur noch einen anderen Fehler^^
Siehe Image im anhang.
Danke schon ma.

edit:
@Muetze1:
Eine Neue Frage, ein neues Thema, ich empfand das als richtig, korrigier mich falls ich was falsch gemacht habe.


[edit=Matze]2,25 MB großen Bitmap-Anhang entfernt. Das kleinere JPG-Bild befindet sich nun ja 2 Beiträge unter diesem. MfG, Matze[/edit]

Muetze1 12. Nov 2007 18:55

Re: Dateityp fehler
 
1. Dann rede im anderen Thread nicht von einem anderen Fehler. Ich suche doch nicht vorher das Forum ab, ob du die Frage nochmal stellst. Verlinke im anderen Thread von mir aus drauf...
2. Bitmap? Du glaubst auch alle haben DSL? Bitte nutze ein besseres Format wie JPG oder PiNG. Grundsätzlich hätte die Aussage über eine Zugriffsverletzung bei Adresse 00000000 auch gereicht.
3. Lass Form1. weg. Warum du das auch immer davor schreibst...

Seppel 12. Nov 2007 18:57

Re: Dateityp fehler
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Muetze1
1. Dann rede im anderen Thread nicht von einem anderen Fehler. Ich suche doch nicht vorher das Forum ab, ob du die Frage nochmal stellst. Verlinke im anderen Thread von mir aus drauf...
2. Bitmap? Du glaubst auch alle haben DSL? Bitte nutze ein besseres Format wie JPG oder PiNG. Grundsätzlich hätte die Aussage über eine Zugriffsverletzung bei Adresse 00000000 auch gereicht.
3. Lass Form1. weg. Warum du das auch immer davor schreibst...

Form1 ist da weil edID auch auf Form 1 liegt, wie oben angesprochen, liefere gleich jpg nach.

DeddyH 12. Nov 2007 18:59

Re: Dateityp fehler
 
In dem Screenshot seh ich aber immer noch was von ListBox1.Items.Text.

Seppel 12. Nov 2007 19:03

Re: Dateityp fehler
 
Zitat:

Zitat von DeddyH
In dem Screenshot seh ich aber immer noch was von ListBox1.Items.Text.

Hab 2 Buttons 1mal ein alter, der mit dem text zum testen, hab ihn aber jetzt auch entfernt und der neue mit dem aktuellem code, kann es sein dass er meckert weil ich die ID(z.B. 2) auf die andere Form übertrage(eher auslese)?

mkinzler 12. Nov 2007 19:04

Re: Dateityp fehler
 
Welchen Fehler? Hast du die andere Unit eingebunden? Zeig mal den aktuellen Code.

Seppel 12. Nov 2007 19:06

Re: Dateityp fehler
 
Also der Fehler ist weiter oben als jpg, der gesamte code kommt jetzt.^^

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, DB, ZSqlMetadata, ZAbstractTable, ZDataset,
  ZAbstractRODataset, ZAbstractDataset, DBCtrls, ZConnection, Unit3, Inifiles, jpeg;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox3: TGroupBox;
    test: TListView;
    edVorname: TEdit;
    edName: TEdit;
    edAdresse: TEdit;
    edPLZ: TEdit;
    edWohnort: TEdit;
    edID: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Button1: TButton;
    Button2: TButton;
    GroupBox2: TGroupBox;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    edServer: TEdit;
    edLogin: TEdit;
    edPasswort: TEdit;
    edDB: TEdit;
    Button3: TButton;
    qrMain: TZQuery;
    trMain: TZSQLMetadata;
    dsMain: TDataSource;
    dbmain: TZConnection;
    Button5: TButton;
    Button6: TButton;
    Button4: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure testSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure BilderClick(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);

   

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
 
implementation

uses Unit4;

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);
begin
  dbMain.Hostname:=edServer.Text;
  dbMain.User:=edLogin.Text;
  dbMain.Password:=edPasswort.Text;
  dbMain.Database:=edDB.Text;
  dbMain.Connected:=True;

  try
  qrMain.SQL.Text:='CREATE TABLE `adressbuch` ('+
                   '`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,'+
                   '`vorname` TEXT NOT NULL,'+
                   '`name` TEXT NOT NULL,'+
                   '`adresse` TEXT NOT NULL,'+
                   '`wohnort` TEXT NOT NULL,'+
                   '`plz` INT NOT NULL'+
                   ');';
  qrMain.ExecSql;
  finally
    dbMain.Connected:=False;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 dbMain.Hostname:=edServer.Text;
  dbMain.User:=edLogin.Text;
  dbMain.Password:=edPasswort.Text;
  dbMain.Database:=edDB.Text;
  dbMain.Connected:=True;

  dbMain.Connected:=True; //Verbindung herstellen
  try
    qrMain.SQL.Text:='INSERT INTO `adressbuch` '+
                    '(`id`, `vorname`, `name`, `adresse`, `wohnort`, `plz`)'+
                    ' VALUES '+
                    '('''', '''+edVorname.Text+''', '''+edName.Text+
                    ''', '''+edAdresse.Text+''', '''+edWohnort.Text+
                    ''', '''+edPLZ.Text+''');';

    qrMain.ExecSql; //SQL-Statement ausf&#252hren

  finally
    dbMain.Connected:=False; //Verbindung trennen
  end;
  end;
procedure TForm1.Button5Click(Sender: TObject);
begin
  dbMain.Hostname:=edServer.Text;
  dbMain.User:=edLogin.Text;
  dbMain.Password:=edPasswort.Text;
  dbMain.Database:=edDB.Text;
  dbMain.Connected:=True;
  try
  qrMain.SQL.Text:='DELETE FROM adressbuch WHERE id='''+edID.Text+''';';
  qrMain.ExecSql;
    finally
        dbMain.Connected:=False;
        end;

end;



procedure TForm1.Button6Click(Sender: TObject);
var ListItem: TListItem;
begin
  dbMain.Hostname:=edServer.Text;
  dbMain.User:=edLogin.Text;
  dbMain.Password:=edPasswort.Text;
  dbMain.Database:=edDB.Text;
  dbMain.Connected:=True;

  try
  test.Items.Clear;
  qrMain.SQL.Text:='Select * from `adressbuch` order by name;';
  qrMain.Open;

  while not qrMain.Eof do
  begin
    ListItem := test.Items.Add;
    ListItem.Caption:=qrMain.FieldByName('id').AsString;
    ListItem.SubItems.Add(qrMain.FieldByName('vorname').AsString);
    ListItem.SubItems.Add(qrMain.FieldByName('name').AsString);
    ListItem.SubItems.Add(qrMain.FieldByName('adresse').AsString);
    ListItem.SubItems.Add(qrMain.FieldByName('plz').AsString);
    ListItem.SubItems.Add(qrMain.FieldByName('wohnort').AsString);
    qrMain.Next;
  end;


    finally
        dbMain.Connected:=False;
        end;


end;

procedure TForm1.Button1Click(Sender: TObject);
begin
dbMain.Hostname:=edServer.Text;
dbMain.User:=edLogin.Text;
dbMain.Password:=edPasswort.Text;
dbMain.Database:=edDB.Text;
dbMain.Connected:=True;

  try
       qrMain.SQL.Text:='UPDATE `adressbuch` Set `vorname`='''+edVorname.Text+''','+
                             '`name`='''+edName.Text+''','+
                             '`adresse`='''+edAdresse.Text+''','+
                             '`plz`='''+edPLZ.Text+''','+
                             '`wohnort`='''+edWohnort.Text+''' '+
                             'WHERE `id`='''+edID.Text+''';';
    qrMain.ExecSql; //SQL-Statement ausführen
    finally
        dbMain.Connected:=False;
        end;

end;

procedure TForm1.testSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
  edID.Text := Item.Caption;
  edVorname.Text := Item.SubItems[0];
  edName.Text := Item.SubItems[1];
  edAdresse.Text := Item.SubItems[2];
  edPLZ.Text := Item.SubItems[3];
  edWohnort.Text := Item.SubItems[4];
end;





procedure TForm1.BilderClick(Sender: TObject);
//var copyedit1: TStrings;
var IniFile: TIniFile;
begin
try
IniFile:=TInifile.Create(ExtractFilePath(ParamStr(0))+'login.ini');
  IniFile.WriteString('Host','Host', edServer.Text);
  IniFile.WriteString('User','Login', edLogin.Text);
  IniFile.WriteString('Pass','Passwort', edPasswort.Text);
  IniFile.WriteString('Database','Datenbank', edDB.Text);

finally
  IniFile.Free;
  end;

//copyedit1:=TStringlist.Create;
//copyedit1.Add(edserver.Text);
//copyedit1.Add(edLogin.Text);
//copyedit1.Add(edPasswort.Text);
//copyedit1.Add(edDB.Text);
//copyedit1.SaveToFile('logindaten.ini');
//copyedit1.Free;

end;




procedure TForm1.Button8Click(Sender: TObject);
begin
Form1.Close;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Form3.Show;
end;

procedure TForm1.Button10Click(Sender: TObject);
var IniFile: TIniFile;
begin
try
IniFile:=TInifile.Create(ExtractFilePath(ParamStr(0))+'login.ini');
  edServer.Text:=IniFile.ReadString('Host','Host', '');
    edLogin.Text:=IniFile.ReadString('User','Login', '');
      edPasswort.Text:=IniFile.ReadString('Pass','Passwort', '');
        edDB.Text:=IniFile.ReadString('Database','Datenbank', '');

  finally
  IniFile.Free;
  end;

end;

procedure TForm1.Button11Click(Sender: TObject);
begin
Form4.show;
end;

end.
So und jetzt das mit den Bildern:
Delphi-Quellcode:
unit Unit4;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit1, StdCtrls, ExtCtrls, jpeg;

type
  TForm4 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
        private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form4: TForm4;

implementation

{$R *.dfm}
procedure ListAllPics(sPath: string; List: TStrings);
var Rec: TSearchRec;
begin
  List.BeginUpdate;
  List.Clear;
  if sPath[Length(sPath)] <> '\' then
    sPath := sPath + '\';
  if FindFirst(sPath + '*.*',faAnyfile,Rec) = 0 then
    begin
      repeat
        if (AnsiLowerCase(ExtractFileExt(Rec.Name)) = '.jpeg') or
            (AnsiLowerCase(ExtractFileExt(Rec.Name)) = '.jpg') then
          List.Add(Rec.Name);
      until FindNext(Rec) <> 0;
      FindClose(Rec);
    end;
  List.EndUpdate;
end;
procedure TForm4.FormCreate(Sender: TObject);
begin
ListAllPics('C:\Dokumente und Einstellungen\Sebastian\Desktop\Programmieren\Mysqlconnect\Pics\'+Form1.edID.text ,Listbox1.Items);
end;

procedure TForm4.Button1Click(Sender: TObject);
begin
image1.Picture.Create;
try
image1.Picture.LoadFromFile('C:\Dokumente und Einstellungen\Sebastian\Desktop\Programmieren\Mysqlconnect\Pics\'+Form1.edID.text +'\' +Listbox1.Items[ListBox1.ItemIndex]);
 finally
 image1.Picture.Free;
 end;
 end;

  end.

Seppel 12. Nov 2007 19:08

Re: Dateityp fehler
 
Es geht, hab einfach ma kein image am anfang created.
Verdammt hab auch vergessen es damit zuzuweisen, habs wohl oben falsch verstanden.
Danke

mkinzler 12. Nov 2007 19:11

Re: Dateityp fehler
 
In Zeile 48 hast du immer noch den falschen Code!


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