דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
A

avr416

@avr416
אודות
פוסטים
1.0k
נושאים
203
קבוצות
0
עוקבים
2
עוקב אחרי
0

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • תוכנה לשליחת אימיילים
    A avr416

    הנה הקוד שאתה צריך כדי ליצור מיזוג בקובץ PDF.
    אתה צריך לכלול את הספריה הבאה בפרוייקט שלך: https://www.nrecosite.com/pdf_generator_net.aspx
    אם אתה רוצה שקובץ הPDF יהיה מעוצב יפה, אתה צריך ליצור HTML ואח"כ להמיר אותו לPDF.
    חשוב- תוודא שההפניות לקבצי הCSS שלך יהיו הפניות מלאות ולא חלקיות (דהיינו נתיב מוחלט), אח"כ הספריה הנ"ל לא תדע לטעון אותם.

    בהצלחה!

    using NReco.PdfGenerator;
    using System.IO;
    using System.Threading.Tasks;
    using System.Web.Mvc;
    
    namespace EmailService
    {
        /// <summary>
        /// מחלקה לדוגמה שמכילה את המידע העדכני עבור יצירת הקובץ
        /// </summary>
        public class ContentFile
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string CustomerName { get; set; }
        }
    
        public static class CreatePdfFile
        {
            /// <summary>
            /// יוצר קובץ פי.די.אף מקומי על השרת
            /// </summary>
            /// <param name="content"></param>
            /// <param name="fileName"></param>
            /// <param name="path"></param>
            /// <param name="controller"></param>
            /// <returns></returns>
            public static async Task<bool> CreateFile(ContentFile content, string fileName, string path, ControllerContext controller)
            {
                bool success = false;
    
                var stream = await CreateStream(content, controller);
    
    
                using (FileStream fs = new FileStream(fileName, FileMode.Create))
                {
                    stream.WriteTo(fs);
                    success = true;
                }
                
                return success;
            }             
    
            /// <summary>
            /// מחזיר סטרים של קובץ פי.די.אף בלא לשמור על השרת
            /// יותר נח כאשר רוצים לשלוח מייל או לתת ללקוח להוריד מהדפדפן
            /// כך אתה מפחית את העומס מהשרת שלך
            /// </summary>
            /// <param name="content"></param>
            /// <param name="controller"></param>
            /// <returns></returns>
            public static async Task<MemoryStream> CreateStream(ContentFile content, ControllerContext controller)
            {
                var html = await CreateHtmlToString(content, controller);
    
                MemoryStream memory = new MemoryStream();
    
                //משתמש בספריה NReco.PdfGenerator - ניתנת להתקנה דרך NuGet
    
                var htmlToPDF = new HtmlToPdfConverter();
                var pdfBytes = htmlToPDF.GeneratePdf(html);
                htmlToPDF.CustomWkHtmlArgs = " --load-media-error-handling ignore ";
                htmlToPDF.GeneratePdf(html, null, memory);
                memory.Position = 0;
                return memory;
            }
           
            private static async Task<string> CreateHtmlToString(ContentFile content, ControllerContext controller)
            {             
                //הנתיב צריך להפנות לקובץ ההטמל הנכון
                string html = RenderViewToString(controller,
                    "~/Views/Email/CreateFileInHtml.cshtml",
                    content, true);
    
                return html;
            }
    
            
            private static string RenderViewToString(ControllerContext context,
                                       string viewPath,
                                       object model = null,
                                       bool partial = false)
            {
                // first find the ViewEngine for this view
                ViewEngineResult viewEngineResult = null;
                if (partial)
                    viewEngineResult = ViewEngines.Engines.FindPartialView(context, viewPath);
                else
                    viewEngineResult = ViewEngines.Engines.FindView(context, viewPath, null);
    
                if (viewEngineResult == null)
                    throw new FileNotFoundException("View cannot be found.");
    
                // get the view and attach the model to view data
                var view = viewEngineResult.View;
                context.Controller.ViewData.Model = model;
    
                string result = null;
    
                using (var sw = new StringWriter())
                {
                    var ctx = new ViewContext(context, view,
                                                context.Controller.ViewData,
                                                context.Controller.TempData,
                                                sw);
                    view.Render(ctx, sw);
                    result = sw.ToString();
                }
    
                return result;
            }
    
        }
    }
    

    פורסם במקור בפורום CODE613 ב06/06/2017 16:57 (+03:00)


  • sql-server 32 ביט
    A avr416

    למה שלא תוריד sql express?
    ואם אתה רוצה דווקא את sql server בגירסתו המלאה, ואתה לא צריך להוריד את זה לפרודוקשיין אלא רק לפיתוח, אז החל מ2016 הם שחררו גרסא מלאה בשם developer. תחפש באתר שלהם.
    מדריך להתקנת גרסת express
    מדריך להורדת גרסת המפתחים

    בהצלחה!
    אברהם

    פורסם במקור בפורום CODE613 ב30/04/2017 23:25 (+03:00)


  • עבודה\לימודים\תואר...
    A avr416

    שלום אליעזר!
    איזה יופי לראות אותך פה שוב!
    למיטב זכרוני לפי מה שכתבת כאן בזמנו, אז התחלת קורס בתכנות בשפת C# ואפי' למדת שם כבר ASP, לא?
    אם כן, נראה לי שכדאי לך להמשיך ולפתח את מה שאתה כבר יודע (כלומר C# ולא PHP), וכמובן להוסיף ללמוד JS.
    דוטנט היא שפה שיכולה לתת לך כלים גם לתכנות רציני הלאה, מלבד בניית אתרים (לעומת PHP ווורדפרס שהם ייעודיות רק לזה).
    מאידך, גם בדוטנט יש לך פלטפורמות מוכנות לבניית אתרים כולל ניהול תוכן (כעין וורדפרס) לדוגמא וגם זה .
    לכן לענ"ד כדאי לך קודם כל להתמקצע במה שאתה כבר יודע קצת.
    מאידך גיסא, אולי באמת אם אתה מתכוונן יותר לתחום של בניית אתרים אז אולי וורדפרס זה תחום יותר חם היום.. אך דווקא לי זה נראה קצת יותר משעמם.. (כלומר, אתרי תדמית וכדו'), יותר מעניין זה אפליקציות ווב, שבתחום הזה לC# יש יתרון ענק! (שוב הכל לפי מיעוט ידיעותי.. אבל כיון שאף אחד לא ענה לך - אז אני מרשה לעצמי לענות 😉 )
    @אליעזר

    בעיקר לגבי השאלה האם אכן יש סיכוי למצוא עבודה לאחר לימוד עצמי של התחום, חודשים בודדים?
    אם כן, מה עדיף לי ללמוד כדי למצוא בזה עבודה, PHP וורדפרס או C# וASP.NET?

    אין לי ניסיון כדי לענות לך :smile:
    אבל נראה לי שכדי למצוא עבודה בתור שכיר אתה צריך קבלות שיעידו שאתה יודע, וזה או "תעודה", או תיק עבודות רציני, שבשביל זה מספיק לך לעשות כל מיני פרוייקטים רציניים, שיוכלו להעיד על היכולות שלך.

    פורסם במקור בפורום CODE613 ב30/01/2017 22:02 (+02:00)


  • MVC - הודעות שגיאה בעברית במקום באנגלית
    A avr416

    @רחמים

    פתחתי פרוייקט MVC חדש, והרצתי אותו יש לי למעלה לחצן הרשמה שפותח טופס הרשמה כאשר אני מנסה לשלוח את הטופס כשהוא ריק מופיעות כמה הודעות שגיאה באנגלית, האם אפשר שהודעות השגיאה יופיע בעברית?

    אתה צריך להוסיף בקוד שלך, מעל המאפיינים של הטופס את האטריבוט ErrorMessage שנמצא בניימספייס הזה:
    using System.ComponentModel.DataAnnotations;
    הנה דוגמא:

    [Display(Name="שם פרטי")]
    [Required(ErrorMessage ="{0} הינו שדה חובה.")]
    public string FirstName { get; set; }
    

    לגבי השאלה השניה, ראה כאן וכאן

    פורסם במקור בפורום CODE613 ב22/08/2016 15:26 (+03:00)


  • שגיאה מוזרה בתאריך
    A avr416

    כנראה שאתה אמור לשלוח את התאריך במבנה אחר, זה נראה כאילו אתה שולח את הימים במקום של החדשים, ולכן הוא מוכן לקבל רק עד המספר 12.
    תנסה להחליף ביניהם.

    פורסם במקור בפורום CODE613 ב06/08/2016 22:15 (+03:00)


  • C# פונקציה לטיפול ב enum המוגדר כ flags ?
    A avr416

    על כזאת תשובה בהירה ומפורטת, לא מספיק רק לסמן תודה..
    אז שכוייח עצום!!

    פורסם במקור בפורום CODE613 ב04/07/2016 10:04 (+03:00)


  • ספרי לימוד במדעי המחשב - מהדורה דיגיטלית של האוניברסיטה הפתו
    A avr416

    אולי אתם מכירים.. אבל עבור מי שלא (כמוני למשל :smile: )
    לאוניברסיטה הפתוחה יש פרוייקט בשם פא"ר שבמסגרתו ישנה אפשרות לצפות בצורה חינמית בהרבה ספרי לימוד שלהם במגוון תחומים, בין היתר בתחום של מדעי המחשב.

    פתוח גם בנטפרי!
    בין היתר יש שם ספרים על בסיסי נתונים, מערכות מידע, אלגוריתמים וכו'.
    בהצלחה.

    פורסם במקור בפורום CODE613 ב22/06/2016 21:06 (+03:00)


  • WPF: DataTemplate עם 2 אפשרויות - היש כזאת חיה?
    A avr416

    תודה רבה! אכן שיניתי.
    לא הצלחתי להשתמש בטמפלט בינידינג (הוא כלל לא נתן לי את האפשרות הזאת, ואם כתבתי אותה בעצמי הוא סימן לי שגיאה..)
    אז מחיפוש בסטאק מצאתי את הקוד הבא:

    Visibility="{Binding CloseButtonVisebilty, RelativeSource={RelativeSource AncestorType={x:Type local:TabItemCustom}}}"
    

    ואכן זה עובד!!

    2016-06-07.png

    תודה רבה!!

    ClickOne - תודה רבה על כל הקישורים שהבאת!! למדתי מהם המון!!
    במיוחד מצאתי כאן אחד שעושה פרוייקט נהדר של עיצובים חדשניים לWPF.

    פורסם במקור בפורום CODE613 ב07/06/2016 22:33 (+03:00)


  • מסד נתונים ב NET.
    A avr416

    זה מקום מעולה להתחיל ולהבין גם איך זה עובד..
    בהצלחה!

    פורסם במקור בפורום CODE613 ב31/05/2016 20:12 (+03:00)


  • ייעוץ-בניית אתר לגמחים וכדו'
    A avr416

    בתור מתחיל שעבד קצת עם asp.net mvc
    הייתי ממליץ לך להתחיל עם זה, זו אכן פלטפורמה נוחה לעבודה וללמידה (כמו כל הפלטפורמות של מיקרוסופט שיש עליהם גם הרבה תיעוד).
    לגבי צד שרת - אתה יכול להשאר עם זה ולא חייב לעבור לnode.js
    לגבי צד לקוח - יש לך את הrazor שזהו בעצם מין קובץ html שמשלב בתוכו קוד דוטנטי עבור ערכים של משתנים וכדו', שהשרת מרנדר אותו לHTML רגיל שמוצג ללקוח עם כל המידע הנכון. זהו תחביר מאד קל ופשוט ללמידה, ויש בו אכן הרבה הרבה כח!
    אם הUI אמור להיות פשוט ולא מורכב מדי - לך על זה.
    אך אם הUI אמור להיות משהו יותר דינמי, והמשתמש אמור להזין הרבה מידע וכו' נראה לי שעדיף לך לעשות את צד הלקוח עם אנגולר או אחת מהספריות בסגנון, שיחסכו לך הרבה הרבה כאב ראש ועבודה כפולה.. אבל כאמור אתה יכול להמשיך לעבוד עם MVC בתור צד שרת, רק פשוט להחזיר JSON של נתונים במקום להחזיר דפי HTML.
    בהצלחה גדולה!
    ולגבי MVC יש גם את הספר הזה..

    פורסם במקור בפורום CODE613 ב23/05/2016 18:53 (+03:00)


  • דעתכם על מדריך ASP.NET MVC 4 של מאיר קרודו
    A avr416

    כן יש לי אותו..
    זה בעצם תרגום מאנגלית של הספר המקורי שיצא כמדומני לפני כמה שנים.. ככה שהוא לא הכי הכי עדכני.
    ולכן יהיה לך קצת פער בין הדוגמאות וצילומי המסך למה שיש היום ב VS (שזה גרסא 4.5.2 או 5).
    אבל בסה"כ העקרונות הם אותו דבר, ורוב הדברים זה אותו דבר (כמדומני).
    בתור מתחיל הוא נותן את הרקע ומסביר את היסודות בשפה בהירה (חוץ מהתרגום שלפעמים קצת מעצבן..)
    כמו כן, יש בו הרבה הרבה דברים למתקדמים (כך שהוא ממש לא רק למתחילים, ואולי אפי' קצת קשה למתחילים לפעמים, וצריך לקרוא את הדברים כמה פעמים כדי להבין אותם.. ועד היום לא עברתי על כולו :? ).
    אבל נראה לי שגם למומחים כאן יש אותו ואתן להם להרחיב יותר (אם ירצו כמובן :lol: )

    לסיכום - ספר מעולה! ממליץ בחום.

    פורסם במקור בפורום CODE613 ב11/05/2016 08:57 (+03:00)


  • תכנות א-סינכורני בC# 5 ומעלה
    A avr416

    לכל מי שתהה מה זה task, await ו async
    אז יש כאן קישור לסרטון מעולה בעברית!! (באורך של שעה וחצי, ההסבר על זה מתחיל בדקה ה20 ), הוא מרחיב בהסבר על ההבדל בין תכנות סינכרוני וא-סינכרוני, ועל החידוש בC#5 (די מיושן.. יש היום כבר 6 :lol:, אבל ההרצאה היא מ2012 למניינם.. ) בקלות השימוש בתכנות אסינכרוני.
    הרצאה מעולה, עם הסבר נרחב מאד על השימוש בawait, async וכו'.

    כמובן, שגם יש לנו כאן בפורום את המדריך המעולה של דוד ל.ט. על תכנות מקבילי ושימוש בThreading, אם כי השימוש בawayt אינו בהכרח קשור לשימוש בטרייד שונה.
    לדוגמא, כאשר אנו רוצים לבצע פעולה עם שימוש ברשת (network) ואנו לא יודעים תוך כמה זמן נקבל תשובה וכדו', אז אפשר ליצור טרייד חדש שהוא יבצע את הפעולה הזאת, וכך לא נתקע את הטרייד הראשי (וממילא את כל הUI (באפליקצייה עם UI) וכדו') עד שהתשובה תחזור. אולם, במקרה זה הטרייד המשני הוא זה שמחכה ומחכה, והוא זה שתקוע.. ממילא, אם האפליקציה שלנו רצה על השרת, והשרת מקבל הרבה הרבה קריאות, ובכל קריאה הוא יוצר טרייד חדש לפעולות הללו, אנו יכולים להגיע למצב של עומס על המערכת..
    לכן הפתרון של await הוא בעצם לשחרר את הטרייד לבצע מה שהוא רוצה במשך הזמן שהוא מחכה לתשובה, וכשהתשובה תגיע - הוא יקבל הודעה וימשיך מהמקום בו הוא עצר. אמנם, זה היה קיים גם קודם לכן בדוטנט, אם כי זה היה הרבה יותר מסורבל לכתוב דבר כזה, ואילו עכשיו מספיק להגדיר שהמתודה היא async (ואולי גם להוסיף לה task<t> כשT זה בעצם int / string או כל מה שאני רוצה שהמתודה תחזיר..), וממילא כשאני קורא לפעולת הנטוורק לכתוב קודם await שבעצם אני אומר - תחזיר את מה שיש לך עד עכשיו, וכשתקבל תשובה תמשיך מכאן והלאה.
    כמובן שזה לא קורה לבד, אלא הקומפיילר מהדר את הקוד ויוצר זאת עבורנו.. אולם, לי בתור מפתח זה מקצר את הקוד, ועושה אותו הרבה יותר בהיר וקל לתחזוקה.

    פורסם במקור בפורום CODE613 ב13/02/2016 23:35 (+02:00)


  • פריקת קיטור על JS
    A avr416

    אוי ג'אווה סקריפט למה לא יכלו לעשות אותך קצת יותר ידידותית למשתמש??????????
    למה??? למה?????????

    שרפתי היום (וביום חמישי-שישי) מלא שעות על איזה באג טיפשי כ"כ, שכדי לעלות עליו לקח לי מלא זמן...

    (טענתי טופס בAJAX ואח"כ שלחתי אותו שוב באותה דרך, ובשליחה הוא כל פעם ריפרש את כל הדף, עד שהתבררה הבעיה שכיון שהטופס נטען רק עם AJAX אז צריך שהקוד שקורא לID שלו יטען רק אחריו (כלומר יטען איתו יחד, ולא יהיה כלול בקובץ של הסקריפטים הראשי.) כיון שאחרת הוא לא מכיר אותו. כמובן שאני מכיר את הכלל הזה.. ואני משתמש בדוקמנט.רידי של jquery אבל לא חשבתי על הבעיה הזאת...
    וגם לא קיבלתי ממנו שום התראה על כך, כי ניגשתי אליו ע"י jquery שלא התריע שהוא לא מכיר את הID הזה).

    למה לא יכלו לעשות איזה אדיטור פשוט שמתריע על כל החריגות והשגיאות, כמו בדוט-נט????? :evil: :evil:
    געגועי לC#

    וכמובן, לא באתי לפתוח כאן מלחמת עולם בין שתי המחנות :lol: אלא רק להוציא את הקיטור החוצה :lol: :lol:

    פורסם במקור בפורום CODE613 ב05/12/2015 23:32 (+02:00)


  • סנכרון - בקשת מדריך
    A avr416

    לענ"ד נראה שאם תרחיב קצת יותר ותפרט מה בדיוק אתה מחפש לגבי "סנכרון נתונים",
    יהיה יותר קל לאנשים לעזור לך.
    עיי"ש ודו"ק והנלע"ד כתבתי :smile:

    פורסם במקור בפורום CODE613 ב20/10/2015 00:47 (+03:00)


  • קריאה וכתיבה מקובץ CSV
    A avr416

    אחרי הרבה עמל ויגיעה... וניסיון לקרוא קוד של אחרים ולראות כיצד הם מימשו זאת :smile:

    אז הנה התוצר המוגמר:
    וכמובן נעזרתי הרבה הרבה בקוד של הבחור הנ"ל.. (כדי לומר דבר בשם אומרו:-)) אם כי נראה לי שהקוד שלו קצת חסר...

    בכל אופן אשמח מאוד מאוד לשמוע הערות והארות(גם בסגנון יכלת לכתוב את כל זה בשתי שורות :lol: כי בסוף העיקר זה ללמוד ולהשתכלל..):
    אז הנה, תתחילו להתקיף :lol: :lol:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Reflection;
    using Person;
    
    namespace Avraham.CsvReader
    {
        /// <summary>
        /// מחלקה המגדירה את אובייקט השורה של קובץ CSV.
        /// המחלקה יורשת מליסט כדי לאחסן את הערכים במערך.
        /// </summary>
        public class RowCsv:List<string>
        {
            /// <summary>
            /// מאפיין המכיל את השורה שנקראה מהקובץ
            /// </summary>
            public string LineText { get; set; }
        }
        /// <summary>
        /// מחלקה המגדירה אובייקט המכיל את ערכי הכותרת העמודות
        /// המחלקה יורשת מליסט כדי לאחסן זאת במערך.
        /// </summary>
        public class ColumnHeader:List<string>
        {
            /// <summary>
            /// מקבל את הסך הכללי של העמודות שיש בקובץ
            /// </summary>
            public int ColumnNumber { get; set; }
        }
        /// <summary>
        /// מחלקה לקריאה מקובץ CSV.
        /// </summary>
        public class CsvReader:StreamReader
        {
            /// <summary>
            /// הגדרת התו המפריד בין הנתונים
            /// תקן רגיל: ','. תקן אירופאי: ';'.
            /// </summary>
            private char separator = ',';
           
            public CsvReader(Stream stream):base(stream,Encoding.Default)
            {
            }
            public CsvReader(string path):base(path,Encoding.Default)
            {
            }
            /// <summary>
            /// מתודה הקוראת את השורה הראשונה של הקובץ ומגדירה את שמות העמודות
            /// </summary>
            /// <param name="row"></param>
            /// <param name="separator">מגדיר את התוו המפריד בין הנתונים בד"כ ',' בתקן האירופאי ';'.</param>
            /// <returns>מחזיר אובייקט של רשימת העמודות</returns>
            public ColumnHeader ReadHeader(RowCsv row, char separator=',')
            {
                this.separator = separator;
                ColumnHeader columns = new ColumnHeader();
    
                string[] value = row.LineText.Split(',');
                for(int i = 0; i<value.Length;i++)
                {                
                    columns.Add(value[i]);
                    columns.ColumnNumber = i + 1;
                }
                return columns;
            }
            /// <summary>
            /// מתודה לקריאת שורה מהקובץ
            /// </summary>
            /// <param name="row"></param>
            /// <param name="separator"></param>
            /// <returns></returns>
            private bool ReadRowCsv(RowCsv row,char separator=',')
            {
                this.separator = separator;
    
                if (string.IsNullOrWhiteSpace(row.LineText))
                    return false;
                //משתנה המכיל את מיקום התו הנוכחי
                int position = 0;
                ///משתנה המכיל את מיקום התא הנוכחי
                int cell = 0;
                //מגדיר את נקודת ההתחלה בשביל הערך של התא הנוכחי שנקרא
                int start = 0;
    
                //לולאה שקוראת תו אחר תו
                while(position<row.LineText.Length)
                {
                    string value;
                    //אם התו הנוכחי מכיל גרשיים צריך לקרוא מהקובץ עד לגרשיים הבאים, כיון שהכל הוא נתון של תא אחר
                    //והגרשיים באים כיון שיש באמצע פסיק וכדו' שהוא לא נועד כדי להפריד
                    if(row.LineText[position]=='"')
                    {
                        position++;
                        start = position;  
                        //הלולאה קוראת את התווים הבאים עד שהיא מגיעה לגרשיים הבאים                                                        
                        while (position < row.LineText.Length)
                        {                        
                            if (row.LineText[position] == '"')
                            {  
                                //מעלה את המונה באחד כדי לבדוק האם התו הבא הוא גם גרשיים
                                //אם כן, נמצא שלא סיימנו את קריאת הערך של התא, אלא זה נועד רק כדי לסמן שהגרשיים הם חלק מהערך                         
                                position++;
                                // (כאשר התו הבא אינו גרשיים (וכן הם אינם התו האחרון בשורה                            
                                if (position >= row.LineText.Length || row.LineText[position] != '"')
                                {
                                    //מוריד את המונה באחד, כדי שהערך יקרא עד הגרשיים ולא יותר
                                    position--;
                                    break;
                                }
                            }
                            position++;
                        }
                        //קורא את הערך מהגרשיים הראשונות ועד האחרונות
                        value = row.LineText.Substring(start, position - start);
                        //מחליף את הגרשיים הכפולות הצמודות בגרשיים בודדות
                        value = value.Replace("\"\"", "\"");
                    }
                    //אם הערך לא מתחיל בגרשיים
                    else
                    {
                        start = position;
                        //סופר את התווים עד המיקום של הסימן המפריד
                        while (position < row.LineText.Length && row.LineText[position] != separator)
                            position++;
                        //גוזר את הערך מהמחרוזת
                        value = row.LineText.Substring(start, position - start);
                    }
                    //הוספת הערך שנקרא לליסט של הערכים שנקראו מהשורה
                    if (cell < row.Count)
                        row[cell] = value;
                    else
                        row.Add(value);
                    cell++;
    
                    //מוסיף עוד ספרה למונה כדי להתחיל את הלולאה הבאה מתחילת הערך הבא ולדלג על התו המפריד
                    if(position<row.LineText.Length)
                        position++;
                }
                return true;
            }
            /// <summary>
            /// מתודה לקריאת קובץ CSV שלם.
            /// </summary>
            /// <param name="separator"></param>
            /// <returns></returns>
            public List<Donor> ReadFileCsv(char separator = ',')
            {
                ///המתודה מותאמת לקריאה של אנשי קשר ולכן היא משתמשת במשתנה ספציפי שנועד לזה
                Donor donor = new Donor();
                List<Donor> donors = new List<Donor>();
    
                this.separator = separator;
                RowCsv row = new RowCsv();
                //קורא את השורה הראשונה ובודק האם הקובץ המיובא מתאים למשתני התכנית
                row.LineText = ReadLine();
                int mone = 0;
                //בדיקה שהעמודות בקובץ קיימות ומתאימות למאפייני המשתנה
                ColumnHeader columns = ReadHeader(row, separator);           
               for(int i=0;i<columns.ColumnNumber;i++)
                {
                    MemberInfo mi = (MemberInfo)typeof(Person.Donor).GetProperty(columns[i]);
                    if (mi.Name == columns[i])
                        mone++;
                }
                if (mone != columns.ColumnNumber)
                    throw new Exception("הקובץ אינו תואם למשתנה");
                //קורא את השורה הבאה ושם את הערכים במאפייני משתני התכנית    
                row.LineText = ReadLine();
                
                while(!string.IsNullOrEmpty(row.LineText))
                {
                    ReadRowCsv(row, separator);
                    donor.Id = int.Parse(row[0]);
                    donor.FirstName = row[1];
                    donor.LastName = row[2];
                    donor.Tel = row[3];
                    donor.Email = row[4];
                    donor.Adress = row[5];
                    if (row[6] == "Female")
                        donor.Gender = Gender.female;
                    else
                        donor.Gender = Gender.male;
                    donors.Add(donor);
                    //קורא שורה חדשה
                    row.LineText = ReadLine();
                    donor = new Donor();
                }
                //מחזיר את הליסט של אנשי הקשר
                return donors;
            }
        }
    }
    

    פורסם במקור בפורום CODE613 ב07/10/2015 21:25 (+03:00)


  • ולידציה של אימייל, תעודת זהות וכרטיסי אשראי
    A avr416

    מצ"ב קובץ של 3 מחלקות סטטיות שבודקות תקינות של מיילים, ת.ז. ואשראי.
    עדכנתי את השינויים גם בקובץ..
    ValidationNew.rar
    העקרונות לת.ז. ואשראי נעשו ע"פ המבואר כאן, כאן, וכאן.
    אני מצרף גם את הקוד ואשמח לשמוע הערות והארות!!
    פונקציה לבדיקת ת.ז. (מתוקן):

    public static class ValidTehudatZehut
        {
    
             public static bool IsValidTZ(string numOfTeudatZehut)
             {
                int sumAll = 0;
    
                if (numOfTeudatZehut.Length > 9||string.IsNullOrEmpty(numOfTeudatZehut))
                    return false;
    
                else if(numOfTeudatZehut.Length<9)
                {
                    while (numOfTeudatZehut.Length < 9)
                    {
                        numOfTeudatZehut = "0" + numOfTeudatZehut;
                    }
                }
               
                for (int i = 9; i > 0; i--)
                { 
                    int x = Convert.ToInt32(numOfTeudatZehut.Substring(i-1, 1));
                    if (i % 2 == 0)
                    {
                        x = x * 2;
                        if (x > 9)
                            x = (x % 10) + 1;
                         sumAll += x;
                    }
                    else
                   {
                         x = x * 1;
                         sumAll += x;
                   }
               }
               sumAll = sumAll % 10;
               if (sumAll % 10 > 0)
                   return false;
               else
                   return true;           
            }
        }
    

    הפונקציה שבודקת כרטיסי אשראי:

    public static bool validCardGenery(string credit)
            { 
                if(string.IsNullOrEmpty(credit))
                {
                    return false;
                }         
                int sumAll = 0;
                //כרטיס בין 11 ל19 תוים נבדק לפי אלגוריתם המשמש לבדיקת תקינות של ת.ז.
                if (credit.Length > 10 && credit.Length < 20)
                {
                    int y = 1;//משתנה שנועד להגדיר האם להכפיל ב1 או ב2
                    for (int i = credit.Length; i > 0; i--)
                    {
                        int x = Convert.ToInt32(credit.Substring(i-1, 1));
                        if (y % 2 == 0)
                        {
                            x = x * 2;
                            if (x > 9)
                                x = (x % 10) + 1;
                            sumAll += x;
                            y++;
                        }
                        else
                        {
                            x = x * 1;
                            sumAll += x;
                            y++;
                        }
                    }
                    sumAll = sumAll % 10;
                    if (sumAll % 10 > 0)
                        return false;
                    else
                        return true;
                }
                //אם אורך המספר בין 8 ל9 תווים - מדובר בכרטיס מסוג ישראכרט והאלגוריתם שונה
                else if (credit.Length == 8 || credit.Length == 9)
                {
                    int y = 1;//מספר הכפל כדי לבדוק אימות כרטיס
                    //אם הכרטיס באורך 8 ספרות - מוסיף לו 0 משמאל לצורך תקינות הבדיקה
                    if (credit.Length == 8)
                    {
                        credit = credit.Insert(0, "0");
                    }
    
                    for (int i = credit.Length; i > 0; i--)
                    {
                        int x = Convert.ToInt32(credit.Substring(i, 1));
                        x = x * y;
                        sumAll += x;
                        y++;
                    }
                    if (sumAll % 11 == 0)
                        return true;
                    else
                        return false;
                }
                //אם המספר ארוך מדי או קצר מדי - מדובר במס' שגוי
                else
                    return false;
            }        
        }
    

    ולגבי הבדיקה של המייל כבר חפרנו בפורום מספיק :lol:
    בהצלחה לכולם!!

    פורסם במקור בפורום CODE613 ב30/08/2015 21:16 (+03:00)


  • "תוכנה לניהול מוסד", וואלה!...
    A avr416

    @ארכיטקט

    תקפוץ למים רק אם אתה אוהב את המים ורוצה לחיות שם לנצח, אז בשביל שלא לדפוק את הלקוח, אתה יכול לקחת את העצות של סופטס. אבל אם אתה בא רק לבקר בבריכה בבין הזמנים, אז תיכנות ברמה כזו זה ממש לא בריכה שנועדה למשחקים, זה נהר האמזונס, או שאתה צולח אותו, או שאתה מוצא את עצמך באמצע יערות הגשם ללא כל מוצא...

    חותם על כל מילה!!
    כשהתחלתי חשבתי שזה בריכת שחיה..
    אבל לאט לאט הבנתי שזה מים שאין להם סוף..
    בכל אופן - ברוך שעשה את הים הגדול :lol: אין ספק שזה כיף ונותן סיפוק :lol:
    אז שיהיה לך (ולכולנו..) בהצלחה!!

    פורסם במקור בפורום CODE613 ב05/08/2015 22:47 (+03:00)


  • מדריך ארכיטקטורת תוכנה שיעור 5 - היזהרו מקובמינות!!!
    A avr416

    @ClickOne

    אבל עדיין לא הספקתי לקנות יותר מכמה עמודים מחוסר זמן.
    אולי בחופש.... :lol: :lol: :lol: :lol:

    אתה מתכוון "לקרוא" כמובן :lol: :lol:

    רחמים, ברוך הבא!!
    אמנם איננו מכירים אבל מכותלי הפורום ניכר שמתכנת מקצועי אתה,
    ותהיה לחברי הפורום לעזר רב!!

    פורסם במקור בפורום CODE613 ב22/07/2015 09:58 (+03:00)


  • למכירה מחשב נייד LENOVO
    A avr416

    @ישראל-א אמר בלמכירה מחשב נייד LENOVO:

    למכירה מחשב נייד מתאים לגרפיקה/שימוש ביתי ועוד במחיר מציאה + תיק תוכנות ועוד.

    מעבד I3-7020
    סתם לידע כללי - זה מעבד בסיסי לשימוש ביתי, זה לא מחשב לגרפיקה.


  • מפתח אבטחה
    A avr416

    @bbn אמר במפתח אבטחה:

    @avr416 אוקי ראיתי את זה..
    אם יש לך נסיון אז אולי תוכל לעזור לי
    אני מחפש משהו שברגע שאני מדליק את הWindows במקום להקיש קוד סודי אז אני פשוט יכניס את הUSB בתור מפתח אבטחה וזה יפתח לי את החשבון.. וזה בעצם האופציה הראשונה שהביא @dovid
    אבל מה שאתה מראה לי זה אומר שגם אני יכול להפוך דיסק און קי רגיל למפתח אבטחה ???
    תודה רבה!!

    כן, מניסיון.
    תכנה די פשוטה וברורה, שיוצרת קובץ של מפתח אבטחה על כל דיסקונקי שיש לך.
    התקנתי את זה בבי"ס אחד על 40 מחשבים, כי התלמידים היו מגלים תוך כמה שניות את הסיסמה של המחשב.. והם ממש מרוצים מהעניין.

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 18
  • 19
  • 4 / 19
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום