AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String in Array einlesen

Ein Thema von jupiter4065139 · begonnen am 4. Jun 2013 · letzter Beitrag vom 14. Jun 2013
Antwort Antwort
jupiter4065139

Registriert seit: 22. Mär 2013
23 Beiträge
 
#1

AW: String in Array einlesen

  Alt 14. Jun 2013, 14:38
Hallo,

vielen Dank für die rege Beteiligung. Ich war letzter zeit verhindert und kann das Problem jetzt erst wieder anpacken. Ich bin zur Zeit dabei mein String in records einzulesen wie bei DeddyH

Delphi-Quellcode:
type
  PRec = ^TRec;
  TRec = record
    Col1, Col2, Col3: string;
  end;

...

//Befüllen
var
  NewRec: PRec;
begin
  New(NewRec);
  NewRec^.Col1 := 'Anton';
  NewRec^.Col2 := 'Berta';
  NewRec^.Col3 := 'Cäsar';
  FList.Add(NewRec);
  New(NewRec);
  NewRec^.Col1 := 'August';
  NewRec^.Col2 := 'Bär';
  NewRec^.Col3 := 'C++';
  FList.Add(NewRec);
  New(NewRec);
  NewRec^.Col1 := 'Auf der Mauer';
  NewRec^.Col2 := 'Auf der Lauer';
  NewRec^.Col3 := 'Dideldum dideldei';
  FList.Add(NewRec);
end
wie gesagt mein string sieht folgendermaßen aus

mystring := col1 + #9 + col2 + #9 +col3;

mit ungefähr hundert zeilen. Wie mach ich denn das am Besten den Pointer NewRec^.Col1 eine Schleife zu verpassen das der mir nur die col1 mit den 100 Werten aus dem string einliest.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: String in Array einlesen

  Alt 14. Jun 2013, 15:21
Ein wenig konfus was Du da willst.
Gehen wir mal davon aus, daß Du eine Funktion hast, die die Inhalte aus einem String auslesen kann (wert:=getcol(i,mystring); )

dann müßte die Verarbeitung ungefähr so aussehen:

Delphi-Quellcode:
var
  NewRec: PRec;
begin
  Stringlist:=tStringlist.Create;
  Stringlist.Loadfromfile('meinedaten.txt');
  for i:=0 to Stringlist.count-1 do begin
    New(NewRec);
    NewRec^.Col1 := getcol(1,Stringlist[i]);
    NewRec^.Col2 := getcol(2,Stringlist[i]);
    NewRec^.Col3 := getcol(3,Stringlist[i]);
    FList.Add(NewRec);
  end;
Wenn Du nur eine Spalte lesen willst dann vllt. so:
Delphi-Quellcode:
var
  NewRec: PRec;
begin
  Stringlist:=tStringlist.Create;
  Stringlist.Loadfromfile('meinedaten.txt');
  for i:=0 to Stringlist.count-1 do begin
    New(NewRec);
    NewRec^.Col1 := getcol(1,Stringlist[i]);
    NewRec^.Col2 := '';
    NewRec^.Col3 := '';
    FList.Add(NewRec);
  end;

U.U wäre es besser mit einem Array of Col zu arbeiten, da könntest Du die einzelnen spalten direkt über einen Index ansprechen.
Aber bitte nicht vergessen vorher alle Felder zu initialsieren.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jupiter4065139

Registriert seit: 22. Mär 2013
23 Beiträge
 
#3

AW: String in Array einlesen

  Alt 14. Jun 2013, 16:01
ok, wie müsste die getcol Funktion ungefähr aussehen?


ich hab noch ne frage: Wie müsste ich denn das machen um den gesamten string mit allen zeilen in die Liste einzulesen
Delphi-Quellcode:
mystring := col1 + #9 + col2 + #9 + col3 + #13#10; //AK

              strl:=Tstringlist.Create;
              strl.add(mystring);
              strl.SaveToFile('liste.txt');
so gibt er mir nur eine zeile wieder

Geändert von jupiter4065139 (14. Jun 2013 um 16:31 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz