![]() |
| 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. |
kod hata |
Yanıt Yaz
|
| Yazar | |
Ömer Faruk
Yeni Üye
Kayıt Tarihi: 07 Mart 2026 Durum: Aktif Değil Puanlar: 2 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı Ömer Faruk
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Teşekkürler(0)
Alıntı Cevapla
Konu: kod hataGönderim Zamanı: 3 Saat 28 Dakika Önce Saat 20:57 |
|
Merhabalar benim stok takip ile ilgili bir kodum var bu kodda bir hata alıyorum hatamı çözemedim yardım eder misiniz:
var MainForm : TclForm; LblBaslik, LblStokBilgi, LblBarkodSonuc : TclLabel; BtnOku, BtnCikis, BtnSil, BtnQREkle : TclProButton; QRGen : TClQRCodeGenerator; LytQR : TclLayout; ShareService : TclShareService; AktifBarkod, StokJSON, StokDosyaYolu : string; // ============================================================ // JSON YARDIMCI FONKSİYONLARI // ============================================================ function JSONGetField(jsonText, fieldName: string): string; var startTag: string; startPos, endPos: integer; { startTag = '"' + fieldName + '": "'; startPos = Pos(startTag, jsonText); if (startPos > 0) { startPos = startPos + Length(startTag); endPos = PosEx('"', jsonText, startPos); Result = Copy(jsonText, startPos, endPos - startPos); } else Result = ''; } function JSONGetNumber(jsonText, fieldName: string): string; var startTag, c: string; startPos, endPos : integer; { startTag = '"' + fieldName + '": '; startPos = Pos(startTag, jsonText); if (startPos > 0) { startPos = startPos + Length(startTag); endPos = startPos; while (endPos <= Length(jsonText)) { c = Copy(jsonText, endPos, 1); if (((c >= '0') and (c <= '9')) or (c == '.')) then endPos = endPos + 1 else break; } Result = Copy(jsonText, startPos, endPos - startPos); } else Result = '0'; } // ============================================================ // VERİ YÖNETİMİ // ============================================================ void VeritabaniKaydet { clSaveToFile(StokDosyaYolu, StokJSON); } void VeritabaniYukle { StokDosyaYolu = clPathCombine('stok_listesi.json', Clomosy.AppFilesPath); if clFileExists(StokDosyaYolu) then StokJSON = clLoadFromFile(StokDosyaYolu) else StokJSON = '{}'; } // ============================================================ // BARKOD VE STOK İŞLEMLERİ // ============================================================ void BarkodOkundu var ham, barkodNo : string; urunBlok : string; isim, adet, fiyat : string; startPos, endPos : integer; blokTag : string; { ham = LblBarkodSonuc.Text; if (ham == '') then Exit; // Barkod önekini temizle barkodNo = StringReplace(ham, 'CELIK-STOK-', '', [rfReplaceAll]); AktifBarkod = barkodNo; blokTag = '"' + barkodNo + '": {'; startPos = Pos(blokTag, StokJSON); if (startPos > 0) { endPos = PosEx('}', StokJSON, startPos); urunBlok = Copy(StokJSON, startPos, endPos - startPos + 1); isim = JSONGetField(urunBlok, 'isim'); adet = JSONGetNumber(urunBlok, 'adet'); fiyat = JSONGetNumber(urunBlok, 'fiyat'); LblStokBilgi.Text = 'Ürün : ' + isim + #13#10 + 'Adet : ' + adet + #13#10 + 'Fiyat: ' + fiyat + ' TL'; } else { LblStokBilgi.Text = 'Barkod: ' + barkodNo + #13#10 + 'Kayıtlı değil. Yeni kayıt oluşturabilirsiniz.'; } } void BarkodOkuClick { MainForm.CallBarcodeReader(LblBarkodSonuc); } void YeniKayitVeQRClick var yeniIsim, adetStr, fiyatStr, barkodNo, qrMetni, yeniSatir: string; { barkodNo = clInputBox('Yeni Kayıt', 'Barkod Numarası:', ''); if (barkodNo == '') then Exit; yeniIsim = clInputBox('Yeni Kayıt', 'Parça Adı:', ''); if (yeniIsim == '') then Exit; adetStr = clInputBox('Stok', 'Adet:', '1'); fiyatStr = clInputBox('Fiyat', 'Birim Fiyat (TL):', '0.0'); // JSON Satırı Oluştur yeniSatir = '"' + barkodNo + '": {"isim": "' + yeniIsim + '", "adet": ' + adetStr + ', "fiyat": ' + fiyatStr + '}'; if (StokJSON == '{}') then StokJSON = '{' + yeniSatir + '}' else StokJSON = StringReplace(StokJSON, '}', ',' + yeniSatir + '}', [rfReplaceAll]); VeritabaniKaydet; // QR Kodu göster qrMetni = 'CELIK-STOK-' + barkodNo; QRGen.Text = qrMetni; LytQR.Visible = True; ShowMessage('Kayıt Başarıyla Eklendi!'); BarkodOkundu; // Arayüzü güncelle } void UrunSilClick var blokTag: string; startPos, endPos: integer; { if (AktifBarkod == '') then { ShowMessage('Önce barkod okutun.'); Exit; } if (clConfirm(AktifBarkod + ' barkodlu ürün silinsin mi?')) then { blokTag = '"' + AktifBarkod + '":'; startPos = Pos(blokTag, StokJSON); if (startPos > 0) then { endPos = PosEx('}', StokJSON, startPos); Delete(StokJSON, startPos, endPos - startPos + 1); VeritabaniKaydet; LblStokBilgi.Text = 'Ürün silindi.'; AktifBarkod = ''; } } } void DısaAktarClick { ShareService = TclShareService.Create; ShareService.AddFile(StokDosyaYolu); ShareService.Share; } void CikisClick { MainForm.Close; } // ============================================================ // FORM TASARIMI // ============================================================ void FormKurulum var BtnDısaAktar : TclProButton; LytAlt : TclLayout; { // Başlık LblBaslik = MainForm.AddNewLabel(MainForm, 'LblBaslik', 'CELİKLER MOTOR STOK SİSTEMİ'); LblBaslik.Align = alTop; LblBaslik.Height = 50; LblBaslik.TextSettings.Font.Size = 18; LblBaslik.TextSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF'); LblBaslik.Margins.Top = 10; // Gizli Barkod Sonuç Tutucu LblBarkodSonuc = MainForm.AddNewLabel(MainForm, 'LblBarkodSonuc', ''); LblBarkodSonuc.Visible = False; MainForm.AddNewEvent(LblBarkodSonuc, tbeOnChange, 'BarkodOkundu'); // Stok Bilgi Paneli LblStokBilgi = MainForm.AddNewLabel(MainForm, 'LblStokBilgi', 'İşlem yapmak için barkod okutun.'); LblStokBilgi.Align = alTop; LblStokBilgi.Height = 120; LblStokBilgi.Margins.Left = 10; LblStokBilgi.TextSettings.Font.Size = 15; LblStokBilgi.TextSettings.FontColor = clAlphaColor.clHexToColor('#E0E0E0'); // Ana Butonlar BtnOku = MainForm.AddNewProButton(MainForm, 'BtnOku', '📷 BARKOD OKU'); BtnOku.Align = alTop; BtnOku.Height = 60; BtnOku.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1565C0'); BtnOku.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF'); BtnOku.clProSettings.FontSize = 16; BtnOku.SetclProSettings(BtnOku.clProSettings); BtnOku.OnClick = 'BarkodOkuClick'; BtnQREkle = MainForm.AddNewProButton(MainForm, 'BtnQREkle', '➕ YENİ KAYIT EKLE'); BtnQREkle.Align = alTop; BtnQREkle.Height = 60; BtnQREkle.Margins.Top = 10; BtnQREkle.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#2E7D32'); BtnQREkle.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFFFFF'); BtnQREkle.clProSettings.FontSize = 16; BtnQREkle.SetclProSettings(BtnQREkle.clProSettings); BtnQREkle.OnClick = 'YeniKayitVeQRClick'; // QR Alanı LytQR = MainForm.AddNewLayout(MainForm, 'LytQR'); LytQR.Align = alTop; LytQR.Height = 160; LytQR.Visible = False; QRGen = MainForm.AddNewQRCodeGenerator(LytQR, 'QRGen', ''); QRGen.Align = alCenter; QRGen.Width = 150; QRGen.Height = 150; // Alt Panel LytAlt = MainForm.AddNewLayout(MainForm, 'LytAlt'); LytAlt.Align = alBottom; LytAlt.Height = 60; LytAlt.Margins.Bottom = 10; BtnSil = MainForm.AddNewProButton(LytAlt, 'BtnSil', '🗑 SİL'); BtnSil.Align = alLeft; BtnSil.Width = 100; BtnSil.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#B71C1C'); BtnSil.SetclProSettings(BtnSil.clProSettings); BtnSil.OnClick = 'UrunSilClick'; BtnDısaAktar = MainForm.AddNewProButton(LytAlt, 'BtnDısaAktar', '📤 AKTAR'); BtnDısaAktar.Align = alClient; BtnDısaAktar.Margins.Left = 5; BtnDısaAktar.Margins.Right = 5; BtnDısaAktar.OnClick = 'DısaAktarClick'; BtnCikis = MainForm.AddNewProButton(LytAlt, 'BtnCikis', '❌ ÇIKIŞ'); BtnCikis.Align = alRight; BtnCikis.Width = 100; BtnCikis.OnClick = 'CikisClick'; } // ============================================================ // ANA BAŞLANGIÇ // ============================================================ { MainForm = TclForm.Create(Self); MainForm.Color = clAlphaColor.clHexToColor('#0D1B2A'); VeritabaniYukle; FormKurulum; MainForm.Run; } Unit Main: Syntax error. Source position: 43,23 |
|
![]() |
|
Emr.Erkmn
Moderatör
Kayıt Tarihi: 28 Şubat 2025 Durum: Aktif Puanlar: 905 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı Emr.Erkmn
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Teşekkürler(0)
Alıntı Cevapla
Gönderim Zamanı: 1 saat 51 Dakika Önce Saat 22:34 |
|
Merhabalar
Syntax hatalarına baktım and yerine && or yerine ||kullanmakla gerekli if koşulunda then kullanmaman gerekli
StringReplace yerine de ClGetStringReplace kullanman gerekli
var MainForm, YeniKayitForm, OnayForm : TclForm; LblBaslik, LblStokBilgi, LblBarkodSonuc : TclLabel; BtnOku, BtnCikis, BtnSil, BtnGitYeniKayit : TclProButton; QRGen : TClQRCodeGenerator; LytQR : TclLayout; ShareService : TclShareService; AktifBarkod, StokJSON, StokDosyaYolu : string; EdtBarkod, EdtIsim, EdtAdet, EdtFiyat : TclProEdit; BtnKaydet : TclProButton; BtnEvet, BtnHayir, BtnDisaAktar : TclProButton; LblOnaySoru : TclLabel; function PosEx(SubStr, S: string; Offset: Integer): Integer; var TempStr: string; FoundPos: Integer; { TempStr = Copy(S, Offset, Length(S)); FoundPos = Pos(SubStr, TempStr); if (FoundPos > 0) { Result = FoundPos + Offset - 1; } else { Result = 0; } } function JSONGetField(jsonText, fieldName: string): string; var startTag: string; startPos, endPos: integer; { startTag = '"' + fieldName + '": "'; startPos = Pos(startTag, jsonText); if (startPos > 0) { startPos = startPos + Length(startTag); endPos = PosEx('"', jsonText, startPos); Result = Copy(jsonText, startPos, endPos - startPos); } else { Result = ''; } } function JSONGetNumber(jsonText, fieldName: string): string; var startTag, c: string; startPos, endPos : integer; { startTag = '"' + fieldName + '": '; startPos = Pos(startTag, jsonText); if (startPos > 0) { startPos = startPos + Length(startTag); endPos = startPos; while (endPos <= Length(jsonText)) { c = Copy(jsonText, endPos, 1); if (((c >= '0') && (c <= '9')) || (c == '.')) { endPos = endPos + 1; } else { break; } } Result = Copy(jsonText, startPos, endPos - startPos); } else { Result = '0'; } } void VeritabaniKaydet; { clSaveToFile(StokDosyaYolu, StokJSON); } void VeritabaniYukle; { StokDosyaYolu = clPathCombine('stok_listesi.json', Clomosy.AppFilesPath); if (clFileExists(StokDosyaYolu)) { StokJSON = clLoadFromFile(StokDosyaYolu); } else { StokJSON = '{}'; } } void BarkodOkundu; var ham, barkodNo, urunBlok, isim, adet, fiyat : string; startPos, endPos : integer; blokTag : string; { ham = LblBarkodSonuc.Text; if (ham == '') { Exit; } barkodNo = clGetStringReplace(ham, 'CELIK-STOK-', ''); AktifBarkod = barkodNo; blokTag = '"' + barkodNo + '": {'; startPos = Pos(blokTag, StokJSON); if (startPos > 0) { endPos = PosEx('}', StokJSON, startPos); urunBlok = Copy(StokJSON, startPos, endPos - startPos + 1); isim = JSONGetField(urunBlok, 'isim'); adet = JSONGetNumber(urunBlok, 'adet'); fiyat = JSONGetNumber(urunBlok, 'fiyat'); LblStokBilgi.Text = 'Ürün: ' + isim + #13#10 + 'Adet: ' + adet + #13#10 + 'Fiyat: ' + fiyat + ' TL'; } else { LblStokBilgi.Text = 'Barkod: ' + barkodNo + #13#10 + 'Kayıtlı değil.'; } } void SilmeIsleminiGerceklestir; var blokTag: string; startPos, endPos: integer; { blokTag = '"' + AktifBarkod + '":'; startPos = Pos(blokTag, StokJSON); if (startPos > 0) { endPos = PosEx('}', StokJSON, startPos); Delete(StokJSON, startPos, endPos - startPos + 1); StokJSON = clGetStringReplace(StokJSON, ',,', ','); StokJSON = clGetStringReplace(StokJSON, '{,', '{'); StokJSON = clGetStringReplace(StokJSON, ',}', '}'); VeritabaniKaydet; LblStokBilgi.Text = 'Ürün silindi.'; AktifBarkod = ''; OnayForm.Close; ShowMessage('Ürün silindi.'); } } void OnayEkraniKapat; { OnayForm.Close; } void UrunSilClick; { if (AktifBarkod == '') { ShowMessage('Önce barkod okutun.'); Exit; } OnayForm = TclForm.Create(Self); OnayForm.SetFormColor('#0D1B2A', '', clGNone); LblOnaySoru = OnayForm.AddNewLabel(OnayForm, 'LblOnaySoru', AktifBarkod + ' barkodlu ürün silinsin mi?'); LblOnaySoru.Align = alTop; LblOnaySoru.Height = 80; LblOnaySoru.TextSettings.FontColor = clAlphaColor.clWhite; LblOnaySoru.TextSettings.HorzAlign = palCenter; BtnEvet = OnayForm.AddNewProButton(OnayForm, 'BtnEvet', 'EVET, SİL'); BtnEvet.Align = alTop; BtnEvet.Height = 50; BtnEvet.Margins.Top = 10; BtnEvet.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#B71C1C'); BtnEvet.SetclProSettings(BtnEvet.clProSettings); OnayForm.AddNewEvent(BtnEvet, tbeOnClick, 'SilmeIsleminiGerceklestir'); BtnHayir = OnayForm.AddNewProButton(OnayForm, 'BtnHayir', 'HAYIR, İPTAL ET'); BtnHayir.Align = alTop; BtnHayir.Height = 50; BtnHayir.Margins.Top = 10; BtnHayir.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#455A64'); BtnHayir.SetclProSettings(BtnHayir.clProSettings); OnayForm.AddNewEvent(BtnHayir, tbeOnClick, 'OnayEkraniKapat'); OnayForm.Run; } void GercekKaydiYap; var yeniSatir, qrMetni : string; { if ((EdtBarkod.Text == '') || (EdtIsim.Text == '')) { ShowMessage('Eksik bilgi!'); Exit; } yeniSatir = '"' + EdtBarkod.Text + '": {"isim": "' + EdtIsim.Text + '", "adet": ' + EdtAdet.Text + ', "fiyat": ' + EdtFiyat.Text + '}'; if (StokJSON == '{}') { StokJSON = '{' + yeniSatir + '}'; } else { StokJSON = clGetStringReplace(StokJSON, '}', ',' + yeniSatir + '}'); } VeritabaniKaydet; qrMetni = 'CELIK-STOK-' + EdtBarkod.Text; QRGen.Text = qrMetni; LytQR.Visible = True; ShowMessage('Kayıt Eklendi!'); YeniKayitForm.Close; BarkodOkundu; } void YeniKayitEkraniAc; { YeniKayitForm = TclForm.Create(Self); YeniKayitForm.SetFormColor('#0D1B2A', '', clGNone); EdtBarkod = YeniKayitForm.AddNewProEdit(YeniKayitForm, 'EdtBarkod', 'Barkod No'); EdtBarkod.Align = alTop; EdtBarkod.Margins.Top = 20; EdtIsim = YeniKayitForm.AddNewProEdit(YeniKayitForm, 'EdtIsim', 'Ürün Adı'); EdtIsim.Align = alTop; EdtIsim.Margins.Top = 10; EdtAdet = YeniKayitForm.AddNewProEdit(YeniKayitForm, 'EdtAdet', 'Adet'); EdtAdet.Align = alTop; EdtAdet.Margins.Top = 10; EdtAdet.Text = '1'; EdtFiyat = YeniKayitForm.AddNewProEdit(YeniKayitForm, 'EdtFiyat', 'Fiyat'); EdtFiyat.Align = alTop; EdtFiyat.Margins.Top = 10; EdtFiyat.Text = '0.0'; BtnKaydet = YeniKayitForm.AddNewProButton(YeniKayitForm, 'BtnKaydet', 'KAYDET VE QR ÜRET'); BtnKaydet.Align = alTop; BtnKaydet.Margins.Top = 20; BtnKaydet.Height = 50; BtnKaydet.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#2E7D32'); BtnKaydet.SetclProSettings(BtnKaydet.clProSettings); YeniKayitForm.AddNewEvent(BtnKaydet, tbeOnClick, 'GercekKaydiYap'); YeniKayitForm.Run; } void BarkodOkuClick; { MainForm.CallBarcodeReader(LblBarkodSonuc); } void DisaAktarClick; { ShareService = TclShareService.Create; ShareService.AddFile(StokDosyaYolu); ShareService.Share; } void CikisClick; { MainForm.Close; } void FormKurulum; var LytAlt : TclLayout; { LblBaslik = MainForm.AddNewLabel(MainForm, 'LblBaslik', 'CELİKLER MOTOR STOK'); LblBaslik.Align = alTop; LblBaslik.Height = 50; LblBaslik.TextSettings.Font.Size = 18; LblBaslik.TextSettings.FontColor = clAlphaColor.clWhite; LblBarkodSonuc = MainForm.AddNewLabel(MainForm, 'LblBarkodSonuc', ''); LblBarkodSonuc.Visible = False; MainForm.AddNewEvent(LblBarkodSonuc, tbeOnChange, 'BarkodOkundu'); LblStokBilgi = MainForm.AddNewLabel(MainForm, 'LblStokBilgi', 'Barkod okutun.'); LblStokBilgi.Align = alTop; LblStokBilgi.Height = 120; LblStokBilgi.TextSettings.FontColor = clAlphaColor.clHexToColor('#E0E0E0'); BtnOku = MainForm.AddNewProButton(MainForm, 'BtnOku', '📷 BARKOD OKU'); BtnOku.Align = alTop; BtnOku.Height = 60; BtnOku.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1565C0'); BtnOku.SetclProSettings(BtnOku.clProSettings); MainForm.AddNewEvent(BtnOku, tbeOnClick, 'BarkodOkuClick'); BtnGitYeniKayit = MainForm.AddNewProButton(MainForm, 'BtnGitYeniKayit', '➕ YENİ KAYIT'); BtnGitYeniKayit.Align = alTop; BtnGitYeniKayit.Height = 60; BtnGitYeniKayit.Margins.Top = 10; BtnGitYeniKayit.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#2E7D32'); BtnGitYeniKayit.SetclProSettings(BtnGitYeniKayit.clProSettings); MainForm.AddNewEvent(BtnGitYeniKayit, tbeOnClick, 'YeniKayitEkraniAc'); LytQR = MainForm.AddNewLayout(MainForm, 'LytQR'); LytQR.Align = alTop; LytQR.Height = 160; LytQR.Visible = False; QRGen = MainForm.AddNewQRCodeGenerator(LytQR, 'QRGen', ''); QRGen.Align = alCenter; QRGen.Width = 150; QRGen.Height = 150; LytAlt = MainForm.AddNewLayout(MainForm, 'LytAlt'); LytAlt.Align = alBottom; LytAlt.Height = 60; BtnSil = MainForm.AddNewProButton(LytAlt, 'BtnSil', '🗑 SİL'); BtnSil.Align = alLeft; BtnSil.Width = 100; BtnSil.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#B71C1C'); BtnSil.SetclProSettings(BtnSil.clProSettings); MainForm.AddNewEvent(BtnSil, tbeOnClick, 'UrunSilClick'); BtnDisaAktar = MainForm.AddNewProButton(LytAlt, 'BtnDisaAktar', '📤 AKTAR'); BtnDisaAktar.Align = alClient; MainForm.AddNewEvent(BtnDisaAktar, tbeOnClick, 'DisaAktarClick'); BtnCikis = MainForm.AddNewProButton(LytAlt, 'BtnCikis', '❌ ÇIKIŞ'); BtnCikis.Align = alRight; BtnCikis.Width = 100; MainForm.AddNewEvent(BtnCikis, tbeOnClick, 'CikisClick'); } { MainForm = TclForm.Create(Self); MainForm.SetFormColor('#0D1B2A', '', clGNone); VeritabaniYukle; FormKurulum; MainForm.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 |