Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

primena ParseRecord procedure na 5 CSV faljova - da li je moguće

  • 2 odgovora
  • 2.076 pregleda

Najnovija ↓

primena ParseRecord procedure na 5 CSV faljova - da li je moguće 14.07.2012. u 15:36 · pre 174 meseca
izmenjeno 1 put, poslednji put savkic 14.07.2012. u 21:10
  1. savkic14.07.2012. u 21:10zapis iz teksta poruke
#1
Imam jedan neobičan zahtev / problem:
- otvoriti 5 csv fajlova,
- izračunati srednju vrednost za svaku ćeliju,
- sačuvati 1 csv fajl sa novim vrednostima, koji ima istu strukturu kao 5 selektovanih.
Da li je moguće računati srednju vrednost matrice, tj. svake ćelije zasebno u Borland Delphi 7 ?

Code:

procedure TForm1.ParseRecord(sRecord: string; Row: integer);
var
  sField, subRecord: string;
  Col, PosComma, PosQ: integer;
begin
  Col := 0;

  repeat
    if Pos('"', sRecord) = 1 then
    begin
      subRecord := Copy(sRecord, 2, Length(sRecord) - 1);
      PosQ := Pos('"', subRecord);
      sField := Copy(sRecord, 2, PosQ - 1);
      // PosQ is position of double quotes in subRecord, which is one character
      //shorter than sRecord
      // Plus two is added due to the fact that there is a comma behind double quotes
      Delete(sRecord, 1, PosQ + 2);
    end
    else begin
      PosComma := Pos(',', sRecord);
      if PosComma > 0 then
      begin
        sField := Copy(sRecord, 1, PosComma - 1);
        Delete(sRecord, 1, PosComma);
      end
      else
        sField := sRecord;
    end;
    StringGrid1.Cells[Col, Row] := sField;
    Col := Col + 1;
  until PosComma = 0;

  // Set column number
  StringGrid1.ColCount := Col;
end;

Re: primena ParseRecord procedure na 5 CSV faljova - da li je moguće 14.07.2012. u 21:18 · pre 174 meseca #2
> Imam jedan neobičan zahtev / problem:
> - otvoriti 5 csv fajlova,
> - izračunati srednju vrednost za svaku ćeliju,
> - sačuvati 1 csv fajl sa novim vrednostima, koji ima istu strukturu kao 5 selektovanih.

Koji deo ti predstavlja problem?

> Da li je moguće računati srednju vrednost matrice, tj. svake ćelije zasebno u Borland Delphi 7 ?

Jeste, samo je manji problem kako ;) Elem, jedna ćelija sadrži string sa više numeričkih vrednosti razdvojenih nekim separatorom? Da bi dobio sve pojedinačne vrednosti možeš koristiti neku svoju funkciju, neku gotovu poput StrToken ili StrTokenToStrings iz JclStrings (JCL bibilioteka). Kada imaš pojedinačne vrednosti dalje lako možeš odrediti srednju vrednost...
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: primena ParseRecord procedure na 5 CSV faljova - da li je moguće 26.07.2012. u 18:25 · pre 173 meseca #3
Hvala Igore,

Pronašao sam tačno to što si mi predložio na http://www.koders.com/delphi/f...AAF1241D90C486EDE5F0F568A.aspx


Code:
function StrToken(var S: AnsiString; Separator: AnsiChar): AnsiString;
var
  I: Integer;
begin
  I := Pos(Separator, S);
  if I <> 0 then
  begin
    Result := Copy(S, 1, I - 1);
    Delete(S, 1, I);
  end
  else
  begin
    Result := S;
    S := '';
  end;
end;

//------------------------------------------------------------------------------

procedure StrTokens(const S: AnsiString; const List: TStrings);
var
  Start: PChar;
  Token: string;
  Done: Boolean;
begin
  Assert(List <> nil);
  List.Clear;
  Start := Pointer(S);
  repeat
    Done := StrWord(Start, Token);
    if Token <> '' then
      List.Add(Token);
  until Done;
end;

//------------------------------------------------------------------------------

procedure StrTokenToStrings(S: AnsiString; Separator: AnsiChar; const List: TStrings);
var
  Token: AnsiString;
begin
  Assert(List <> nil);
  List.Clear;
  while S <> '' do
  begin
    Token := StrToken(S, Separator);
    List.Add(Token);
  end;
end;

//------------------------------------------------------------------------------


Javiću se sa utiscima, čim primenim jednu od navedenih funkcija.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme