Autor Beitrag
Morpheus1572
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: Mi 03.09.08 22:17 
Hi Leutz,

vielleicht gibt es in diesen unzähligen einträgen die lösung, wenn ja habe ich sie nicht gefunden, sorry!!!

Deshalb stelle ich diese frage jetzt u.U. noch mal.

ich lese eine csv-datei in ein StringGrid. die anzahl der benötigten zeilen erfahre ich ja durch StringGrid.RowCount:=meineListe.Count....

damit kann ich also eine exakte Tiefe meines Grids anlegen. Wie erhalte ich aber die benötigten Spalten??? ich muss dafür ja irgendwie dem Wert 'StringGrid.ColCount' etwas zu weisen aber wie?????


Bitte um Hilfe.

Gruß Morph.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mi 03.09.08 22:41 
Hm.. was mir spontan einfällt:
- Nimm die erste Zeile aus der CSV Datei
- Pack diese in eine StringList.CommaText
- In StringList.Count hast du nun deine Spaltenzahl

_________________
PROGRAMMER: A device for converting coffee into software.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 04.09.08 02:08 
Die zusätzliche StringList ist gar nicht nötig, so gehts zum Beispiel auch:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
uses
  StrUtils;

...

function GetOccurrenceCount(uText, uSearchText: String): Integer;
var
  CurrentPos: Integer;
begin
  Result := 0;
  CurrentPos := Pos(uSearchText, uText);
  while CurrentPos > 0 do
  begin
    Inc(Result);
    CurrentPos := PosEx(uSearchText, uText, CurrentPos + 1);
  end;
end;

// benutzen
GetOccurrenceCount('Deine,Zeile,mit,Kommata'',')

// EDIT:
Und wenn es nur um ein Zeichen geht geht es auch noch einfacher (schneller und ohne zusätzliche Unit):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function GetOccurrenceCount2(uText: String; uSearch: Char): Integer;
var
  i: Integer;
begin
  Result := 0;
  for i := 1 to Length(uText) do
    if uText[i] = uSearch then
      Inc(Result);
end;
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Do 04.09.08 07:20 
Nee, jaenicke, so geht das leider nicht: Die CSV-Zeile (Komma=Separator) >a,'x,y,z'< besteht aus zwei Spalten, Du würdest vier daraus machen.
Hier findest Du eine Klasse (TCSVReader), die dir eine CSV-Datei sehr schnell korrekt einließt und dabei die String-Delimiter mit berücksichtigt.
www.delphipraxis.net...ml&highlight=csv

_________________
Na denn, dann. Bis dann, denn.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Do 04.09.08 07:31 
Oder man verwendet die Kombination eines CSV-DataSets und einem DBGrid

_________________
Markus Kinzler.