![]() |
| Clomosy Resmi Forum Sitesidir. Amacımız kullanıcılarımıza, iş ortaklarımıza, danışmanlara, yazılımcılara programlarımız hakkında destek ve bilgi vermektir. |
iOS ImageChooser Sorunu |
Yanıt Yaz
|
| Yazar | |
clBerat
Yeni Üye
Kayıt Tarihi: 1 saat 44 Dakika Önce Durum: Aktif Değil Puanlar: 2 |
Mesaj Seçenekleri
Teşekkürler(0)
Alıntı Cevapla
Konu: iOS ImageChooser SorunuGönderim Zamanı: 1 saat 35 Dakika Önce Saat 13:42 |
|
Android'de sıkıntı yaşatmıyor ama iOS'ta bazen çalışıp bazen donuyor (hiçbirşeye tıklanmıyor) sebebini anlayamadım. var AnaSayfaForm : TCLForm; lblHosGeldin : TClProLabel; edtBarkodSonuc : TclProEdit; btnBarkodOkut, btnCikis, btnUrunBul : TClProButton; imgUrunFoto : TClImage; tmrGemini, tmrKamera : TclTimer; OpenFoodFactsApi, GeminiApi : TCLRest; btnAnaStil, btnAltStil, prefFile : String; prefList : TclStringList; scrollAna : TclVertScrollBox; lytUstKasa, lytSonucKasa, lytAltKasa : TClLayout; lytKasaUrun, lytKasaColyak, lytKasaSporcu : TClLayout; lytIcerikUrun, lytIcerikColyak, lytIcerikSporcu : TClLayout; lblKasaUrunBg, lblKasaColyakBg, lblKasaSporcuBg : TClProLabel; lblUrunBaslik, lblColyakBaslik, lblSporcuBaslik : TClProLabel; memoUrunCevap, memoColyakCevap, memoSporcuCevap : TclMemo; IslemTipi, ArananDeger : String; void BtnCikisYapClick; { prefList.Clear; prefList.SaveToFile(prefFile, 0); Clomosy.GlobalVariableString = ''; Clomosy.RunUnit('uKarsilama'); } void btnBarkodOkutClick; { imgUrunFoto.Visible = False; lytSonucKasa.Visible = False; btnUrunBul.Enabled = True; AnaSayfaForm.CallBarcodeReader(edtBarkodSonuc); } void TmrGeminiTick; var jsonBody, base64Foto, jsonResp, tempStr, geminiSonuc : String; baslangic, bitis, pU, pC, pS, loopLimit : Integer; strU, strC, strS : String; MyStream : TclMemoryStream; { tmrGemini.Enabled = False; GeminiApi.BaseURL = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent?key=AIzaSyDZMmvYLPzJtFJftV8mIDohTQhsmWAzduU'; GeminiApi.Accept = 'application/json'; GeminiApi.Method = rmPost; GeminiApi.AddHeader('Content-Type', 'application/json'); if (IslemTipi == 'Gorsel') { imgUrunFoto.Bitmap.Resize(400, 400); MyStream = TclMemoryStream.Create; imgUrunFoto.Bitmap.SaveToStream(MyStream); MyStream.Position = 0; base64Foto = Clomosy.StreamToBase64(MyStream); MyStream.Free; loopLimit = 0; baslangic = Pos(Chr(13), base64Foto); while ((baslangic > 0) && (loopLimit < 5000)) { Delete(base64Foto, baslangic, 1); baslangic = Pos(Chr(13), base64Foto); loopLimit = loopLimit + 1; } loopLimit = 0; baslangic = Pos(Chr(10), base64Foto); while ((baslangic > 0) && (loopLimit < 5000)) { Delete(base64Foto, baslangic, 1); baslangic = Pos(Chr(10), base64Foto); loopLimit = loopLimit + 1; } jsonBody = '{"contents":[{"parts":[{"text":"Bu fotoğrafı analiz et. Eğer gıda değilse ''Gıda değil'' yaz. Gıda ise KESİNLİKLE ŞU ETİKETLERİ KULLANARAK YANITLA: ###URUN### [Marka ve Adı] ###COLYAK### [Uygun/Değil - Neden] ###SPORCU### [Tavsiye/Değil - Neden]"},{"inline_data":{"mime_type":"image/jpeg","data":"' + base64Foto + '"}}]}]}'; } else { jsonBody = '{"contents":[{"parts":[{"text":"Şu ürünü detaylı (gerekirse o ürünün bilinen genel içeriğine göre) analiz et. CEVABINI KESİNLİKLE ŞU 3 ETİKETİ KULLANARAK VER: ###URUN### [Marka ve Adı] ###COLYAK### [Uygun/Değil - Neden] ###SPORCU### [Tavsiye/Değil - Neden]. Başka hiçbir kelime ekleme. Ürün: ' + ArananDeger + '"}]}]}'; } GeminiApi.AddBody(jsonBody, 'application/json'); try GeminiApi.Execute; jsonResp = GeminiApi.Response; if (Pos('"error"', jsonResp) > 0) { if (Pos('RESOURCE_EXHAUSTED', jsonResp) > 0) { ShowMessage('Yapay Zeka sunucuları anlık olarak yoğun. Lütfen 1 dakika bekleyin.'); memoUrunCevap.Text = 'Sistem Meşgul (Kısa Süreli Bekleme)'; } else { ShowMessage('API Hatası Detayı: ' + jsonResp); memoUrunCevap.Text = 'API Hatası!'; } lytSonucKasa.Visible = True; } else { baslangic = Pos('"text": "', jsonResp); if (baslangic > 0) { tempStr = Copy(jsonResp, baslangic + 9, Length(jsonResp)); bitis = Pos('"', tempStr) - 1; geminiSonuc = Trim(Copy(tempStr, 1, bitis)); loopLimit = 0; baslangic = Pos('\n', geminiSonuc); while ((baslangic > 0) && (loopLimit < 1000)) { geminiSonuc = Copy(geminiSonuc, 1, baslangic - 1) + #13#10 + Copy(geminiSonuc, baslangic + 2, Length(geminiSonuc)); baslangic = Pos('\n', geminiSonuc); loopLimit = loopLimit + 1; } loopLimit = 0; baslangic = Pos('"', geminiSonuc); while ((baslangic > 0) && (loopLimit < 1000)) { Delete(geminiSonuc, baslangic, 1); baslangic = Pos('"', geminiSonuc); loopLimit = loopLimit + 1; } loopLimit = 0; baslangic = Pos('*', geminiSonuc); while ((baslangic > 0) && (loopLimit < 1000)) { Delete(geminiSonuc, baslangic, 1); baslangic = Pos('*', geminiSonuc); loopLimit = loopLimit + 1; } loopLimit = 0; baslangic = Pos('\', geminiSonuc); while ((baslangic > 0) && (loopLimit < 1000)) { Delete(geminiSonuc, baslangic, 1); baslangic = Pos('\', geminiSonuc); loopLimit = loopLimit + 1; } pU = Pos('###URUN###', geminiSonuc); pC = Pos('###COLYAK###', geminiSonuc); pS = Pos('###SPORCU###', geminiSonuc); if (pU > 0) { if (pC > 0) { strU = Trim(Copy(geminiSonuc, pU + 10, pC - pU - 10)); } else { strU = Trim(Copy(geminiSonuc, pU + 10, Length(geminiSonuc) - pU + 1)); } } else { strU = 'Bulunamadı.'; } if (pC > 0) { if (pS > 0) { strC = Trim(Copy(geminiSonuc, pC + 12, pS - pC - 12)); } else { strC = Trim(Copy(geminiSonuc, pC + 12, Length(geminiSonuc) - pC + 1)); } } else { strC = 'Bulunamadı.'; } if (pS > 0) { strS = Trim(Copy(geminiSonuc, pS + 12, Length(geminiSonuc) - pS + 1)); } else { strS = 'Bulunamadı.'; } if ((pU <= 0) && (pC <= 0) && (pS <= 0)) { strU = geminiSonuc; strC = 'Analiz edilemedi.'; strS = 'Analiz edilemedi.'; } memoUrunCevap.Text = strU; memoColyakCevap.Text = strC; memoSporcuCevap.Text = strS; lytSonucKasa.Visible = True; } else { memoUrunCevap.Text = 'Okunamadı.'; ShowMessage('Yapay Zeka Anlayamadı!'); } } except ShowMessage('Bağlantı Hatası: Lütfen internetinizi kontrol edin.'); memoUrunCevap.Text = 'Sistem Meşgul veya İnternet Yok.'; lytSonucKasa.Visible = True; } btnUrunBul.Enabled = True; } void TmrKameraTick; { tmrKamera.Enabled = False; AnaSayfaForm.StartProcessMessages(300); try Clomosy.ImageChooser(AnaSayfaForm, imgUrunFoto); except ShowMessage('Kamera açılamadı, lütfen tekrar deneyin.'); } btnUrunBul.Enabled = True; } void btnUrunBulClick; var arananBarkod, jsonResp, tempStr, urunAdi : String; baslangic, bitis, loopLimit: Integer; { btnUrunBul.Enabled = False; edtBarkodSonuc.Enabled = False; edtBarkodSonuc.Enabled = True; AnaSayfaForm.clVKVisible = False; AnaSayfaForm.StartProcessMessages(100); if (imgUrunFoto.Visible == True) { if (imgUrunFoto.Bitmap == nil) { ShowMessage('Lütfen geçerli bir fotoğraf çekin!'); btnUrunBul.Enabled = True; Exit; } IslemTipi = 'Gorsel'; lytSonucKasa.Visible = True; memoUrunCevap.Text = 'Yapay Zeka Analiz Ediyor...'; memoColyakCevap.Text = 'Bekleniyor...'; memoSporcuCevap.Text = 'Bekleniyor...'; AnaSayfaForm.StartProcessMessages(50); tmrGemini.Enabled = True; } else { arananBarkod = Trim(edtBarkodSonuc.Text); if (arananBarkod == '') { ShowMessage('Lütfen önce bir barkod okutun veya yazın!'); btnUrunBul.Enabled = True; Exit; } lytSonucKasa.Visible = True; memoUrunCevap.Text = 'Veritabanı Aranıyor...'; memoColyakCevap.Text = 'Bekleniyor...'; memoSporcuCevap.Text = 'Bekleniyor...'; AnaSayfaForm.StartProcessMessages(50); OpenFoodFactsApi.BaseURL = 'https://world.openfoodfacts.org/api/v0/product/' + arananBarkod + '.json'; OpenFoodFactsApi.Accept = 'application/json'; OpenFoodFactsApi.Method = rmGet; try OpenFoodFactsApi.Execute; jsonResp = OpenFoodFactsApi.Response; except ShowMessage('Sunucuya bağlanılamadı! İnternet bağlantınızı kontrol edin.'); memoUrunCevap.Text = 'Bağlantı Hatası.'; btnUrunBul.Enabled = True; Exit; } if (Pos('"status":1', jsonResp) > 0) { baslangic = Pos('"product_name_tr":"', jsonResp); if (baslangic > 0) { tempStr = Copy(jsonResp, baslangic + 19, Length(jsonResp)); } else { baslangic = Pos('"product_name":"', jsonResp); if (baslangic > 0) { tempStr = Copy(jsonResp, baslangic + 16, Length(jsonResp)); } } if (baslangic > 0) { bitis = Pos('"', tempStr) - 1; if (bitis > 0) { urunAdi = Copy(tempStr, 1, bitis); } else { urunAdi = 'Bulunamadı'; } } else { urunAdi = 'Bulunamadı'; } baslangic = Pos('"brands":"', jsonResp); if ((baslangic > 0) && (urunAdi <> 'Bulunamadı')) { tempStr = Copy(jsonResp, baslangic + 10, Length(jsonResp)); bitis = Pos('"', tempStr) - 1; if (bitis > 0) { urunAdi = Copy(tempStr, 1, bitis) + ' ' + urunAdi; } } } else { urunAdi = 'Bulunamadı'; } if ((urunAdi == 'Bulunamadı') || (urunAdi == '')) { lytSonucKasa.Visible = False; imgUrunFoto.Visible = True; ShowMessage('Ürün bulunamadı! Kamerayı açmak için Tamam''a basın.'); tmrKamera.Enabled = True; } else { loopLimit = 0; baslangic = Pos('"', urunAdi); while ((baslangic > 0) && (loopLimit < 500)) { Delete(urunAdi, baslangic, 1); baslangic = Pos('"', urunAdi); loopLimit = loopLimit + 1; } loopLimit = 0; baslangic = Pos('\', urunAdi); while ((baslangic > 0) && (loopLimit < 500)) { Delete(urunAdi, baslangic, 1); baslangic = Pos('\', urunAdi); loopLimit = loopLimit + 1; } loopLimit = 0; baslangic = Pos(Chr(13), urunAdi); while ((baslangic > 0) && (loopLimit < 500)) { Delete(urunAdi, baslangic, 1); baslangic = Pos(Chr(13), urunAdi); loopLimit = loopLimit + 1; } loopLimit = 0; baslangic = Pos(Chr(10), urunAdi); while ((baslangic > 0) && (loopLimit < 500)) { Delete(urunAdi, baslangic, 1); baslangic = Pos(Chr(10), urunAdi); loopLimit = loopLimit + 1; } IslemTipi = 'Metin'; ArananDeger = urunAdi; memoUrunCevap.Text = 'Bulundu! AI Analiz Ediyor...'; AnaSayfaForm.StartProcessMessages(50); tmrGemini.Enabled = True; } } } { AnaSayfaForm = TclForm.Create(Self); AnaSayfaForm.SetFormColor('#f1f2f6', '#f1f2f6', clGVertical); OpenFoodFactsApi = TCLRest.Create; GeminiApi = TCLRest.Create; prefFile = clPathCombine('userpref.txt', Clomosy.AppFilesPath); prefList = Clomosy.StringListNew; btnAnaStil = '{"Align":"Top","MarginTop":15,"MarginLeft":25,"MarginRight":25,"Height":55,"RoundHeight":15,"RoundWidth":15,"BackgroundColor":"#00b894","TextColor":"#ffffff","TextSize":16,"TextBold":"yes"}'; btnAltStil = '{"Align":"Bottom","MarginBottom":20,"MarginLeft":25,"MarginRight":25,"Height":55,"RoundHeight":15,"RoundWidth":15,"BackgroundColor":"#ffffff","BorderColor":"#d63031","BorderWidth":2,"TextColor":"#d63031","TextSize":16,"TextBold":"yes"}'; tmrGemini = AnaSayfaForm.AddNewTimer(AnaSayfaForm, 'tmrGemini', 200); tmrGemini.Enabled = False; AnaSayfaForm.AddNewEvent(tmrGemini, tbeOnTimer, 'TmrGeminiTick'); tmrKamera = AnaSayfaForm.AddNewTimer(AnaSayfaForm, 'tmrKamera', 1500); tmrKamera.Enabled = False; AnaSayfaForm.AddNewEvent(tmrKamera, tbeOnTimer, 'TmrKameraTick'); scrollAna = AnaSayfaForm.AddNewVertScrollBox(AnaSayfaForm, 'scrollAna'); scrollAna.Align = alClient; lytAltKasa = AnaSayfaForm.AddNewLayout(AnaSayfaForm, 'lytAltKasa'); lytAltKasa.Align = alBottom; lytAltKasa.Height = 90; btnCikis = AnaSayfaForm.AddNewProButton(lytAltKasa, 'btnCikis', 'GÜVENLİ ÇIKIŞ YAP'); clComponent.SetupComponent(btnCikis, btnAltStil); AnaSayfaForm.AddNewEvent(btnCikis, tbeOnClick, 'BtnCikisYapClick'); lytUstKasa = AnaSayfaForm.AddNewLayout(scrollAna, 'lytUstKasa'); lytUstKasa.Align = alTop; lytUstKasa.Height = 520; lblHosGeldin = AnaSayfaForm.AddNewProLabel(lytUstKasa, 'lblHosGeldin', 'Hoş Geldin,' + #13#10 + Clomosy.GlobalVariableString); clComponent.SetupComponent(lblHosGeldin, '{"Align":"Top","MarginTop":30,"MarginBottom":15,"Height":60,"TextColor":"#2d3436","TextSize":22,"TextBold":"yes","TextHorizontalAlign":"center"}'); edtBarkodSonuc = AnaSayfaForm.AddNewProEdit(lytUstKasa, 'edtBarkodSonuc','Barkod Numarası Girin'); clComponent.SetupComponent(edtBarkodSonuc, '{"Align":"Top","MarginTop":10,"MarginLeft":25,"MarginRight":25,"Height":55,"RoundHeight":12,"RoundWidth":12,"BorderColor":"#b2bec3","BorderWidth":1.5,"BackgroundColor":"#ffffff","TextColor":"#2d3436","TextSize":15,"TextBold":"yes"}'); btnBarkodOkut = AnaSayfaForm.AddNewProButton(lytUstKasa, 'btnBarkodOkut', 'BARKOD OKUT VEYA YAZ'); clComponent.SetupComponent(btnBarkodOkut, btnAnaStil); AnaSayfaForm.AddNewEvent(btnBarkodOkut, tbeOnClick, 'btnBarkodOkutClick'); imgUrunFoto = AnaSayfaForm.AddNewImage(lytUstKasa, 'imgUrunFoto'); imgUrunFoto.Align = alTop; imgUrunFoto.Height = 150; imgUrunFoto.Margins.Top = 15; imgUrunFoto.Margins.Left = 25; imgUrunFoto.Margins.Right = 25; imgUrunFoto.Visible = False; btnUrunBul = AnaSayfaForm.AddNewProButton(lytUstKasa, 'btnUrunBul', 'ÜRÜNÜ ANALİZ ET'); clComponent.SetupComponent(btnUrunBul, btnAnaStil); AnaSayfaForm.AddNewEvent(btnUrunBul, tbeOnClick, 'btnUrunBulClick'); lytSonucKasa = AnaSayfaForm.AddNewLayout(scrollAna, 'lytSonucKasa'); lytSonucKasa.Align = alTop; lytSonucKasa.Height = 850; lytSonucKasa.Visible = False; // 1. SPORCU KARTI lytKasaSporcu = AnaSayfaForm.AddNewLayout(lytSonucKasa, 'lytKasaSporcu'); lytKasaSporcu.Align = alTop; lytKasaSporcu.Height = 250; lytKasaSporcu.Margins.Top = 15; lytKasaSporcu.Margins.Left = 20; lytKasaSporcu.Margins.Right = 20; lblKasaSporcuBg = AnaSayfaForm.AddNewProLabel(lytKasaSporcu, 'lblKasaSporcuBg', ''); clComponent.SetupComponent(lblKasaSporcuBg, '{"Align":"Client","BackgroundColor":"#ffffff","BorderColor":"#ff7675","BorderWidth":2,"RoundHeight":15,"RoundWidth":15}'); lytIcerikSporcu = AnaSayfaForm.AddNewLayout(lblKasaSporcuBg, 'lytIcerikSporcu'); lytIcerikSporcu.Align = alClient; lblSporcuBaslik = AnaSayfaForm.AddNewProLabel(lytIcerikSporcu, 'lblSporcuBaslik', 'Sporcu Analizi'); clComponent.SetupComponent(lblSporcuBaslik, '{"Align":"Top","MarginTop":10,"MarginLeft":15,"Height":25,"TextColor":"#d63031","TextSize":16,"TextBold":"yes"}'); memoSporcuCevap = AnaSayfaForm.AddNewMemo(lytIcerikSporcu, 'memoSporcuCevap', ''); memoSporcuCevap.Align = alClient; memoSporcuCevap.Margins.Top = 5; memoSporcuCevap.Margins.Left = 10; memoSporcuCevap.Margins.Right = 10; memoSporcuCevap.Margins.Bottom = 10; memoSporcuCevap.TextSettings.Font.Size = 14; memoSporcuCevap.ReadOnly = True; memoSporcuCevap.WordWrap = True; // 2. ÇÖLYAK KARTI lytKasaColyak = AnaSayfaForm.AddNewLayout(lytSonucKasa, 'lytKasaColyak'); lytKasaColyak.Align = alTop; lytKasaColyak.Height = 250; lytKasaColyak.Margins.Top = 15; lytKasaColyak.Margins.Left = 20; lytKasaColyak.Margins.Right = 20; lblKasaColyakBg = AnaSayfaForm.AddNewProLabel(lytKasaColyak, 'lblKasaColyakBg', ''); clComponent.SetupComponent(lblKasaColyakBg, '{"Align":"Client","BackgroundColor":"#ffffff","BorderColor":"#74b9ff","BorderWidth":2,"RoundHeight":15,"RoundWidth":15}'); lytIcerikColyak = AnaSayfaForm.AddNewLayout(lblKasaColyakBg, 'lytIcerikColyak'); lytIcerikColyak.Align = alClient; lblColyakBaslik = AnaSayfaForm.AddNewProLabel(lytIcerikColyak, 'lblColyakBaslik', 'Çölyak Analizi'); clComponent.SetupComponent(lblColyakBaslik, '{"Align":"Top","MarginTop":10,"MarginLeft":15,"Height":25,"TextColor":"#0984e3","TextSize":16,"TextBold":"yes"}'); memoColyakCevap = AnaSayfaForm.AddNewMemo(lytIcerikColyak, 'memoColyakCevap', ''); memoColyakCevap.Align = alClient; memoColyakCevap.Margins.Top = 5; memoColyakCevap.Margins.Left = 10; memoColyakCevap.Margins.Right = 10; memoColyakCevap.Margins.Bottom = 10; memoColyakCevap.TextSettings.Font.Size = 14; memoColyakCevap.ReadOnly = True; memoColyakCevap.WordWrap = True; // 3. ÜRÜN KARTI lytKasaUrun = AnaSayfaForm.AddNewLayout(lytSonucKasa, 'lytKasaUrun'); lytKasaUrun.Align = alTop; lytKasaUrun.Height = 150; lytKasaUrun.Margins.Top = 15; lytKasaUrun.Margins.Left = 20; lytKasaUrun.Margins.Right = 20; lblKasaUrunBg = AnaSayfaForm.AddNewProLabel(lytKasaUrun, 'lblKasaUrunBg', ''); clComponent.SetupComponent(lblKasaUrunBg, '{"Align":"Client","BackgroundColor":"#ffffff","BorderColor":"#fdcb6e","BorderWidth":2,"RoundHeight":15,"RoundWidth":15}'); lytIcerikUrun = AnaSayfaForm.AddNewLayout(lblKasaUrunBg, 'lytIcerikUrun'); lytIcerikUrun.Align = alClient; lblUrunBaslik = AnaSayfaForm.AddNewProLabel(lytIcerikUrun, 'lblUrunBaslik', 'Ürün Bilgisi'); clComponent.SetupComponent(lblUrunBaslik, '{"Align":"Top","MarginTop":10,"MarginLeft":15,"Height":25,"TextColor":"#e17055","TextSize":16,"TextBold":"yes"}'); memoUrunCevap = AnaSayfaForm.AddNewMemo(lytIcerikUrun, 'memoUrunCevap', ''); memoUrunCevap.Align = alClient; memoUrunCevap.Margins.Top = 5; memoUrunCevap.Margins.Left = 10; memoUrunCevap.Margins.Right = 10; memoUrunCevap.Margins.Bottom = 10; memoUrunCevap.TextSettings.Font.Size = 14; memoUrunCevap.ReadOnly = True; memoUrunCevap.WordWrap = True; AnaSayfaForm.Run; } https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
|
|
![]() |
|
Yanıt Yaz
|
|
| Tweet |
| Forum Atla | Forum İzinleri ![]() Kapalı Foruma Yeni Konu Gönderme Kapalı Forumdaki Konulara Cevap Yazma Kapalı Forumda Cevapları Silme Kapalı Forumdaki Cevapları Düzenleme Kapalı Forumda Anket Açma Kapalı Forumda Anketlerde Oy Kullanma |