ارسال شده در تاریخ مهر ۲۸م, ۱۳۸۸ به دست شهرام - [ 366 دیدار ]

احتمالا برای شما هم اتفاق افتاده است که بخواهید فایل هایی CSV را در برنامه خود بازخوانی کنید. همانطور که می دانید فایل های CSV فایلهایی هستند که در هر ردیف،  ستون های آن با استفاده از یک کاراکتر خاص جدا شده اند. که البته بیشتر از  کاما (,) و یا (;) و یا (Tab) استفاده می شود.

مثلا متنی مانند این را خواهید داشت: Field1; Field2; Field3; Field4

اگر تصور کنیم که شما بخواهید این ۴فیلد را بازخوانی کنید و در یک بانک اطلاعاتی ذخیره کنید، ابتدا باید این خط را تکه تکه کنید :دی

در ادامه مطلب متدی را نوشته ام که می توانید از آن به راحتی استفاده کنید

تابع اول تعداد تکرار کاراکترهای  جدا کننده و یا همان Separator را مشخص می کند:

  1. function Occurs(const Str, Separator: string): integer;
  2. var
  3. I, nSep: integer;
  4. begin
  5. nSep:= 0;
  6. for I := 1 to Length(Str) do
  7. if Str[I] = separator then
  8. Inc(nSep);
  9. Result := nSep;
  10. end;

تابع دوم، String یا متن شما را با توجه به جدا کننده یا Separator تکه تکه یا Split می کند و در یک متغیر از نوع TStringList بر می گرداند.

  1. function SplitStr(const Str: string; const Separator: string): TStringList;
  2. var
  3. I, Count: integer;
  4. StrLine, StrField: string;
  5. Res: TStringList;
  6. begin
  7. Count := Occurs(Str, Separator);
  8. Res := TStringList.Create;
  9. StrLine := Str;
  10. for I := 0 to Count do
  11. begin
  12. if Pos(Separator, StrLine) > 0 then
  13. begin
  14. StrField := Copy(StrLine, 0, Pos(Separator, StrLine)-1);
  15. StrLine := Copy(StrLine, Pos(Separator, StrLine) +1, Length(StrLine) - Pos(Separator, StrLine));
  16. end
  17. else
  18. StrField := Copy(StrLine, 0, Length(StrLine));
  19. Res.Add(StrField);
  20. end;
  21. Result := Res;
  22. end;

موفق باشید

۱ امتیاز۲ امتیاز۳ امتیاز۴ امتیاز۵ امتیاز (1 رای​، میانگین: 5.00 از 5)
بارگذاری ... بارگذاری ...
ارسال پاسخ