Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Chars in *.cvs pro Zeile zählen (https://www.delphipraxis.net/83231-chars-%2A-cvs-pro-zeile-zaehlen.html)

Lamiadon 29. Dez 2006 14:44


Chars in *.cvs pro Zeile zählen
 
Mahlzeit!

So einige kennen hier ja bestimmt csv Dateien. Die sind mit Excel herstellbar und gut geeignet um mit ihnen Datenbanken zu bearbeiten. Nun will ich aus einer csv die Seperatoren( ein ';') pro Zeile zählen und einen Fehler ausgeben, wenn es weniger als x sind. Ich habe in der beigelegten Hilfe zu meiner Delphi 3-Version nichts dazu gefunden, auch Google und SuFu hat mir nichts gebracht...
die normalen Such-Befehle bringen ja leider nicht raus, wie oft ein Char pro Zeile vorhanden ist, was ich sonst nutzen könnte.

Danke schonmal im Voraus

~Lamiadon

Klaus01 29. Dez 2006 14:54

Re: Chars in *.cvs pro Zeile zählen
 
Hallo,

da es in Delphi3 posex noch nicht gibt, wird Dir nicht
viel anderes übrigbleiben als die Zeile Buchstabe für Buchstabe durchzugehen.

Delphi-Quellcode:
for i:=1 to lenght(zeile) do
  if zeile[i] = ';' then
    inc(counter);
Grüße
Klaus

mpth 29. Dez 2006 14:55

Re: Chars in *.cvs pro Zeile zählen
 
Delphi-Quellcode:
function ZaehleZeichen(const zeile: String; const suchzeichen: Char): integer;
var
  i: integer;
begin
  Result := 0;
  if Length(zeile) > 0 then
    for i := 1 to Length(zeile) do
      if zeile[i] = suchzeichen then
        Result := Result + 1;
end;
allerdings werden damit nicht vorkommen von ; (= suchzeichen) innerhalb von felddaten (also innerhalb von gänsefüßchen) ausgelassen...

_frank_ 29. Dez 2006 14:59

Re: Chars in *.cvs pro Zeile zählen
 
Zitat:

Zitat von mpth

allerdings werden damit nicht vorkommen von ; (= suchzeichen) innerhalb von felddaten (also innerhalb von gänsefüßchen) ausgelassen...

aber so solltes dies funktionieren:

Delphi-Quellcode:
function ZaehleZeichen(const zeile: String; const suchzeichen: Char): integer;
var
  i: integer;
  quoted:boolean;
begin
  Result := 0;
  quoted:=false;
  if Length(zeile) > 0 then
    for i := 1 to Length(zeile) do
    begin
      if (zeile[i] = '"') then
        quoted:=not quoted
      else
        if (zeile[i] = suchzeichen) and (not quoted) then
          Result := Result + 1;
    end;
end;
HTH Frank

mpth 29. Dez 2006 15:01

Re: Chars in *.cvs pro Zeile zählen
 
genau :thumb:

Lamiadon 29. Dez 2006 15:10

Re: Chars in *.cvs pro Zeile zählen
 
joa, danke, schnell wie immer ^^

werde die möglichkeit probieren, die zweite von oben zu nehmen, weil in den Dateien keine ';' außer den Seperatoren vorkommen, und ausprobieren, sobald ich da durchgestiegen bin, bin schließlich noch neuling und muss ersma die befehle in der hilfe nachgucken, schließlich will ich nichts verwenden, was ich nicht auch verstehe.

~Lamiadon

edit: also, wenn ich das richtig sehe, sind "suchzeichen" und "Zeile" Platzhalter, oder :?:
Kann ich diese function so auf eine TStringList anwenden :?:

*hat noch nicht viel mit functions gearbeitet* :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz