Sayfayı Yazdır | Pencereyi Kapat

base64 verisini çekemiyorum

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=812
Tarih: 08 Ocak 2025 Saat 00:03
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: base64 verisini çekemiyorum
Mesajı Yazan: Senol
Konu: base64 verisini çekemiyorum
Mesaj Tarihi: 06 Ağustos 2024 Saat 09:41
//Listviewe tıkladığımda diğer veriler geliyor ama memoya bile base64 verisi gelmiyor //hata veriyor

var
  hayvanSahiplen : TclForm;
  edtYukleyenKisi, edtKonumBilgisi, edtNotEkle : TclEdit;
  noteMemo:TCLMemo;
  CameraImg,SourceImg: TClImage;
  testListview: TClListView;
  Qry : TClSQLiteQuery;
  database, password,baseString : String;
  LMemStream:TCLMemoryStream;
  
void GetData;
{
  try
    Qry = Clomosy.DBSQLiteQueryWith('SELECT ''Yükleyen Kişi:'' || Yukleyenadi as MAIN_TEXT, ''Konum:'' || KonumBilgisi as SUB_TEXT, ''Not:'' || NotBilgisi as FOOTER_TEXT,Base64,Id as SIDE_TEXT_BOTTOM FROM Categories');
    Qry.OpenOrExecute;
    testListview.clLoadListViewDataFromDataset(Qry);
  except
    ShowMessage('Exception class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
  }
}

void noteMemoOnClick;
 {
   
   
  
 }
 
void onItemClicked;
{
  Qry = Clomosy.DBSQLiteQueryWith('SELECT Yukleyenadi, KonumBilgisi, NotBilgisi,Base64 FROM Categories WHERE Id = ''' + clGetStringAfter(testListview.clSelectedItemData('SIDE_TEXT_BOTTOM'), ':') + '''');
  Qry.OpenOrExecute;
  edtYukleyenKisi.Text = Qry.FieldByName('Yukleyenadi').AsString;
  edtKonumBilgisi.Text = Qry.FieldByName('KonumBilgisi').AsString;
  edtNotEkle.Text = Qry.FieldByName('NotBilgisi').AsString;
  LMemStream = TCLMemoryStream.Create;
  LMemStream = Clomosy.Base64ToStream(Qry.FieldByName('Base64').AsString);

   SourceImg.Bitmap.LoadFromStream(LMemStream);
  
}


 
{
  hayvanSahiplen = TclForm.Create(Self);
  
  noteMemo = MyForm.AddNewMemo(MyForm, 'noteMemo', 'Bir Not Giriniz');
  noteMemo.StyledSettings = ssFamily;
  noteMemo.TextSettings.WordWrap = True;
  noteMemo.Height = 30;
  noteMemo.Align = alBottom; 
  
  
  edtYukleyenKisi = hayvanSahiplen.AddNewEdit(hayvanSahiplen, 'edtYukleyenKisi', 'Yüklen Kişi:');
  edtYukleyenKisi.Align = alMostTop;
  
  edtKonumBilgisi = hayvanSahiplen.AddNewEdit(hayvanSahiplen, 'edtKonumBilgisi', 'Konum bilgisi giriniz');
  edtKonumBilgisi.Align = alMostTop;
  
  edtNotEkle = hayvanSahiplen.AddNewEdit(hayvanSahiplen, 'edtNotEkle', 'Not ekleyiniz');
  edtNotEkle.Align = alMostTop;
  
  CameraImg = hayvanSahiplen.AddNewImage(hayvanSahiplen, 'CameraImg');
  CameraImg.Align = alMostTop;
  CameraImg.Height = 390;
  CameraImg.Width = 300;
  
  testListview = hayvanSahiplen.AddNewListView(hayvanSahiplen, 'testListview');
  testListview.Align = alClient;
  hayvanSahiplen.AddNewEvent(testListview, tbeOnMouseDown, 'onItemClicked');
  
  database = Clomosy.AppFilesPath + 'sokaktakiDostum.db3';
  password = '';
  try
    Clomosy.DBSQLiteConnect(database, password);
    Clomosy.DBSQLiteQuery.SQL.Text = 'CREATE TABLE IF NOT EXISTS Categories(Id INTEGER PRIMARY KEY,Yukleyenadi, KonumBilgisi, NotBilgisi,Base64)';
    Clomosy.DBSQLiteQuery.OpenOrExecute;
    ShowMessage('Veri tabanına tablo ekleme işlemi başarılı!');
  except
    ShowMessage('Exception class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
  }
  
  GetData;
  hayvanSahiplen.Run;
}  



Cevaplar:
Mesajı Yazan: Senol
Mesaj Tarihi: 06 Ağustos 2024 Saat 15:13
https://dosya.co/qryejny6agh6/sokaktakiDostum.db3.html" rel="nofollow - https://dosya.co/qryejny6agh6/sokaktakiDostum.db3.html





Mesajı Yazan: oguz22
Mesaj Tarihi: 06 Ağustos 2024 Saat 15:29
noteMemo.text = Qry.FieldByName('ColumnName').AsString;

olarak çekmeyi deneyebilir misin ?



Mesajı Yazan: Senol
Mesaj Tarihi: 06 Ağustos 2024 Saat 16:22
Daha önceden denemiştim şimdi tekrar denedim yine çalışmadı 


Mesajı Yazan: oguz22
Mesaj Tarihi: 06 Ağustos 2024 Saat 16:40
Tamamdır bu kodu incelemeni tavsiye ederim.
İstediğinizi işlemi yapar umarım : 

var

   Port: Integer;

   Form1:TCLForm;

   qry : TClSQLiteQuery;

   MemStream: TclMemoryStream;

   BlobField: TBlobField;

   Img1 : TclImage;

   Base64String: string;

   BinaryData: TBytes;

 

 

void OnGuideQryClick;

 {

     try

       Qry = Clomosy.DBSQLiteQueryWith('SELECT imgUrl FROM TBLDocs WHERE id = 23');

       qry.OpenOrExecute;

       if (qry.Found)

       {

       ShowMessage(qry.FieldByName('imgUrl').AsString);

         BlobField = qry.FieldByName('imgUrl') as TBlobField;

         //MemStream = TclMemoryStream.Create;

         BlobField.SaveToStream(MemStream); // Load BLOB data into the stream

         MemStream.Position = 0;

         //Base64String = Clomosy.StreamToBase64(MemStream);

         //Clomosy.setClipBoard(Base64String);//FOR TEST PURPOSE COPIES BASE6

         //Img1.Bitmap.LoadFromStream(MemStream); // Load the image from the stream

         Img1.Bitmap.LoadFromStream(MemStream);

         MemStream.Free;

        

       }

     except

       ShowMessage('[019] Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);

     }

}

 

   void SqLiteInsertData;

  {

    try

 

      Base64String = Clomosy.FileToBase64(clPathCombine('1Top.png',Clomosy.AppFilesPath));

      MemStream = TclMemoryStream.Create();

      MemStream = Clomosy.Base64ToStream(Base64String);

     

      //BinaryData := TNetEncoding.Base64.DecodeStringToBytes(Base64String);

    //  Clomosy.DBSQLiteQuery.Sql.Text = '

    //INSERT INTO TBLDocs (id, imgName,imgUrl) VALUES (1,''Image 1'','''+Clomosy.FileToBase64(clPathCombine('1Top.png',Clomosy.AppFilesPath))+''');'; //addassetfromurl ile dosyaları indir

      //Clomosy.DBSQLiteQuery.

        ShowMessage(Clomosy.AppFilesPath);

        base64String = Clomosy.FileToBase64(clPathCombine('1Top.png',Clomosy.AppFilesPath));

        Clomosy.DBSQLiteQuery.SQL.Text = 'INSERT INTO TBLDocs (id, imgName, imgUrl) VALUES (23, ''test'', :imgUrl)';

        //Clomosy.DBSQLiteQuery.ParamByName('imgName').AsString = 'Image from Base64';

        Clomosy.DBSQLiteQuery.ParamByName('imgUrl').value = MemStream;

     

      Clomosy.DBSQLiteQuery.OpenOrExecute;

      // https://clomosy.com/learn/1Top.png" rel="nofollow - https://clomosy.com/learn/1Top.png

      ShowMessage('Adding data to the table was successful!');

    except

     ShowMessage('Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);

   }

  }

 

  void SqLiteConnectionCreateTable;

  var

    TableExists: Boolean;

  {

    try

      Clomosy.DBSQLiteConnect(Clomosy.AppFilesPath + 'DBDocsFile.db3', '');

 

      // Check if the table exists

      Clomosy.DBSQLiteQuery.Sql.Text = 'SELECT name FROM sqlite_master WHERE type="table" AND name="TBLDocs";';

      Clomosy.DBSQLiteQuery.OpenOrExecute;

     

      // Check the results

      TableExists = not Clomosy.DBSQLiteQuery.Eof;

     

      // Create the table if it does not exist

      if not (TableExists)

      {

        Clomosy.DBSQLiteQuery.Sql.Text = 'CREATE TABLE TBLDocs (

                                          id INTEGER PRIMARY KEY,

                                          imgName TEXT NOT NULL,

                                          imgUrl BLOB NOT NULL

                                          );';

        Clomosy.DBSQLiteQuery.OpenOrExecute;

       

        ShowMessage('Table successfully added to the database!');

       

      } else

      {

        ShowMessage('The Products table already exists.');

      }

 

    except

     ShowMessage('Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);

    }

  }

 

  {

    Form1 = TclForm.Create(Self);

        ShowMessage(Clomosy.AppFilesPath);

    Img1 = Form1.AddNewImage(Form1,'Img1');

    Img1.Align = alClient;

    SqLiteConnectionCreateTable;

    SqLiteInsertData;

    OnGuideQryClick;

    Form1.Run;

  }




Mesajı Yazan: Senol
Mesaj Tarihi: 06 Ağustos 2024 Saat 16:53
bunu daha önceden denemiştim bu hatanın gitmesi için ne yapabilirim 



Mesajı Yazan: oguz22
Mesaj Tarihi: 06 Ağustos 2024 Saat 16:58
Dosya yolunun doğru olduğundan emin misiniz ?


Mesajı Yazan: Senol
Mesaj Tarihi: 06 Ağustos 2024 Saat 17:21
Sizin attığınız kodda hiçbir şeyi ellemedim neyi değiştirmem gerekiyor da



Mesajı Yazan: oguz22
Mesaj Tarihi: 06 Ağustos 2024 Saat 17:31
Base64String = Clomosy.FileToBase64(clPathCombine('1Top.png',Clomosy.AppFilesPath));

bu kısımda '1Top.png' adında bir resim sizin klasörünüzde bulamadığı için bu hatayı veriyor.

Kendi Resminizi clomosy nin bulundupu kalasöre atarak adını da '1Top.png' yerine yazabilirsiniz.



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net