jpeg sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
yskilic
Üye
Mesajlar: 44
Kayıt: 18 Haz 2003 12:55
Konum: İstanbul

jpeg sorunu

Mesaj gönderen yskilic »

delphide jpeg dosyaları veri tabanında tutamıyorum. mustafa beyin notlarını aldım cok iyi ama oradaki kodda bazı sorunlarla karşılaşıyorum. zannediyorum eksik unit lerden kaynaklanıyor. bu konuda yardım istiyorum. personel kaydında jpeg resim kaydı isteniyor bu sebepten.

BlobField := table1.DataSet.FieldByName('Bild') as TBlobField;

bu satırda undeclereted identifer hatası veriyor ve ben halledemedim. bu neden kaynaklanıyor.

birde sql kullanımının bu konuda bana faydası olurmu olursa nasıl olur?
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

alan ismi ordaki örnekte bild ama sen kendi resim sakladığın alanın ismini yazman lazım.

Kolay gelsin.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

+ bir ek not daha. undeclarated identifier hatası aldığınız kelimenin üstüne gelip klavyeden F1 tuşuna basın. Delphi Help açılır ve en üst tarafta, o kelimenin hangi unitte tanımlandığı yazılıdır. o uniti uses kısmına ekleyin.

SQL kullanımının burada pek faydalı olabileceğini sanmıyorum.

Kolay gelsin.
yskilic
Üye
Mesajlar: 44
Kayıt: 18 Haz 2003 12:55
Konum: İstanbul

teşekkürler

Mesaj gönderen yskilic »

teşekkürler mustafa bey ilginiz için ama DataSet kelimesinin önünde duruyor imleç. TDataSet Db unitinde ve benim uses satırında bu unit var ama hata hala mevcut. Alan olayı konusunda haklısınız onu farkettim ama hata oradan daha önce.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

hangi kelimenin tanınamadığını zaten hata cümlesinde yazması lazım. Delphi hatayı şu şekilde görüntüler :

undeclared indetifier 'xyz'

burada 'xyz' tanınamayan kelime. bunun üzerine gelip F1'e basın ve o uniti ekleyin.

Kolay gelsin.
yskilic
Üye
Mesajlar: 44
Kayıt: 18 Haz 2003 12:55
Konum: İstanbul

doğru ama olmuyo

Mesaj gönderen yskilic »

dediğim gibi yaptım onu ama olmuyo. hata mesajı aynen şöyle

undeclereted identifer 'DataSet'

dataset in uniti için DB diyor yardım dosyası ve zaten benim programda her her tarafta bu unit mevcut hatta veritabanının hemen hemen tüm unitleri mevcut ama halen hata devam ediyor.
yskilic
Üye
Mesajlar: 44
Kayıt: 18 Haz 2003 12:55
Konum: İstanbul

Mesaj gönderen yskilic »

şimdi ben bişeyler yaptım ama bozdummu yaptımmı bilmiyorum. habire tıkanıyorum.
şu hata mesajı vardıya
undeclared indetifier 'xyz'
eğer ki
BlobField := table1.DataSet.FieldByName('Bild') as TBlobField;
bu satırı
BlobField := table1.DataSetField.DataSet.FielByName('Bild') as TBlobField;

olarak değiştirirsem o hatadan kurtuluyorum. ama bu sefer hemen birkaçsatır aşağıda yine aynı hatayı başka bişey için veriyor. oda şu
DataSourceForm.DataSet.Edit;
bu satır için şöyle diyo
undeclared indetifier 'DataSourceForm'
ne yapacağımı bilemiyorum. bu loadPic procedure nü yazmam gereken özel bir yermi var. veya formun üzerine koymam gereken farklı bir bileşen mi var, veya bu procedure ü bir yerden çağırmam mı gerekiyor? anlamadım vallahi :roll:
Y.S.K.
Yazılım Sistemleri
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

uses da Jpeg uniti ekli olduğunu varsayarak aşağıdaki kodlardan yararlanarak JPeg bir resim dosyasını paradoks (bendeki paradoks olduğu için) tablosuna gömebilirsin.

Kod: Tümünü seç

var
    bs: TBlobStream;
    fs: TFileStream;
    jp: TJPEGImage;
begin
....
    tblResim.Append;
    FName := 'c:\resim.jpg')
    fs := TFileStream.Create(FName, fmOpenRead);
    tblResimID_NUMBER.Value := 123;
//      fs := TFileStream.Create('c:\resim.jpg', fmOpenWrite or fmCreate);
    bs := TBlobStream(tblResim.CreateBlobStream(tblResim.FieldByName('RESIM'), bmWrite));
    bs.CopyFrom(fs, 0);
    bs.Free;
    fs.Free;
    tblResim.Post;
.....

    with tblResim do
    if FileExists('c:\resim.jpg') then
    begin
//    tblResimID_NUMBER.Value := 12345;
      if not bFound  then
      begin
        fs := TFileStream.Create('c:\resim.jpg', fmOpenRead);
        Append;
        tblResimID_NUMBER.Value := qryStudentID_NUMBER.Value;
        bs := TBlobStream(CreateBlobStream(FieldByName('RESIM'), bmWrite));
        bs.CopyFrom(fs, 0);
        bs.Free;
        fs.Free;
        Post;
      end;
    end;
...
end;
yskilic
Üye
Mesajlar: 44
Kayıt: 18 Haz 2003 12:55
Konum: İstanbul

Mesaj gönderen yskilic »

tesekkürler rşimşek senin verdiğin kodla mustafa beyin kodunu birleştirince istediğim gibi çalışıyor. ama mustafa beyin kodu tek başına kesin olarak çalışmıyor. benim kullandığım kodun son hali şöyle

table in paradox oluğunu varsayarak

Kod: Tümünü seç

procedure TForm1.loadPic;
var
  jpeg: TJPEGImage;
  Stream: TMemoryStream;
  BlobField: TBlobField;
begin
  BlobField := table1.DataSetField.Dataset.FieldByName('Resmi') as TBlobField;
  jpeg := TJPEGImage.Create;
  try
    if (Image1.Picture.Graphic is TJPegImage) then begin
       jpeg.Assign (Image1.Picture.Bitmap);
    end;
    Stream := TMemoryStream.Create;
    try
       jpeg.SaveToStream (Stream);
       BlobField.LoadFromStream (Stream);
    finally
      Stream.Free;
    end;
  finally
    jpeg.Free;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
    bs: TBlobStream;
    fs: TFileStream;
    jp: TJPEGImage;
    FName:TFileName;
    bFound:boolean;
begin
    table1.Edit;
    FName := (opendialog1.FileName);
    fs := TFileStream.Create(FName, fmOpenRead);
    bs := TBlobStream(table1.CreateBlobStream(table1.FieldByName('Resmi'), bmWrite));
    bs.CopyFrom(fs, 0);
    bs.Free;
    fs.Free;
    table1.Post;

    with table1 do
    if FileExists(opendialog1.FileName) then
    begin
      if not bFound  then
      begin
        fs := TFileStream.Create('c:\resim.jpg', fmOpenRead);
        Append;
        bs := TBlobStream(CreateBlobStream(FieldByName('RESIM'), bmWrite));
        bs.CopyFrom(fs, 0);
        bs.Free;
        fs.Free;
        Post;
      end;
    end;
    table1.Append;
end;

procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
var
  MS: TMemoryStream;
  J1: TJPEGImage;
begin
  J1 := TJPEGImage.Create;
  MS := TMemoryStream.Create;
  try
    TBlobField(DataSet.Fieldbyname('Resmi')).SaveToStream(MS);
    MS.Seek(0,soFromBeginning);
    with J1 do begin
      PixelFormat := jf24Bit;
      Scale := jsFullSize;
      Grayscale := False;
      Performance := jpBestQuality;
      ProgressiveDisplay := True;
      ProgressiveEncoding := True;
      LoadFromStream(MS);
    end;
    if MS.Size >0 then
      Image1.Picture.Assign(J1)
    else
      Image1.Picture.Assign(nil);

  finally
    J1.Free;
    MS.Free;
  end;
end;
Y.S.K.
Yazılım Sistemleri
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

halletmenize sevindim. Ben kodu denedim diye hatırlıyorum ancak tekrar kontrol ederim.

Kolay gelsin.
mmumtaze
Üye
Mesajlar: 10
Kayıt: 07 Eki 2003 11:18
Konum: ankara

merhaba

Mesaj gönderen mmumtaze »

merhabalar Jpeg Sorunu ile ilgili kodu denedim.yalnız "undeclared identifier 'Load Pic' hatasını veriyor.bu komponent felan mı yoksa procedure olarak mı tanımlamam lazım.procedure olarak nasıl tanımlayabilirim?tanımlamaya çalıştım.ama olmadı.YARDIMLARINIZ İÇİN TEŞEKKÜRLER.İYİ RAMAZANLAR.
yskilic
Üye
Mesajlar: 44
Kayıt: 18 Haz 2003 12:55
Konum: İstanbul

Mesaj gönderen yskilic »

hayır loadpic companent falan değil. o bizim eklediğimiz bir procedure. bu procedure' i yukarıda tanımlamanız gerekiyor bunu yaptınız mı?

en yukarıda diğer procedure lerin tanımlı olduğu bölgede bir satır açın ve şöyle yazın

Kod: Tümünü seç

procedure loadpic();
bu şekilde procedure yi tanımlamış olursunuz.
Y.S.K.
Yazılım Sistemleri
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

ykilic dostum jpeg ile ilgili ben bir örnek göndermiştim onu incelersen veritabanı ve jpegle ilgili sorunların çözülür sanırım.

Sevgi ve saygılarla
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
yskilic
Üye
Mesajlar: 44
Kayıt: 18 Haz 2003 12:55
Konum: İstanbul

Mesaj gönderen yskilic »

microchip örneğini bulamadım. tam olarak nerede olduğunu söylersen incelemek isterim. şu an benim jpegle ilgili bir sorunum kalmadı. en son yolladığım kod tam olarak benim istediğim şekilde ve doğru olarak çalışıyor. ancak mmumtaze arkadaşım bu kodla ilgili bazı sorunlar yaşamış. fakat onun karşılaştığı sorunuda tam olarak anlayamadım.
Y.S.K.
Yazılım Sistemleri
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

buyur dostum linkini:
viewtopic.php?t=991&highlight=access+jpeg

gayet kısa ve öz.
hayırlı çalışmalar[/url]
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Cevapla