AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi String zerlegen, auslesen und weiterverwenden
Thema durchsuchen
Ansicht
Themen-Optionen

String zerlegen, auslesen und weiterverwenden

Ein Thema von stonimahoni · begonnen am 28. Sep 2005 · letzter Beitrag vom 29. Sep 2005
Antwort Antwort
stonimahoni

Registriert seit: 12. Okt 2004
146 Beiträge
 
Delphi 7 Professional
 
#1

String zerlegen, auslesen und weiterverwenden

  Alt 28. Sep 2005, 14:05
Hi Leute...

meinereiner hat mal wieder ne Frage :

Da ich mich mit Strings bzw. dem auslesen von Strings noch nicht so auskenne, bräuchte ich mal (wieder) Eure Hilfe.

Also :
(kleiner vorlauf):
Ich habe ein DBGrid, markiere mehrere Zeilen, führe dann eine prozedur durch...
also das ganze in einer Zählschleife von
i := o to blablagrid -1 ..... Aber das ist eher Nebensache;

Ich schreibe mir während dem Durchlauf dieser Schleife die ganzen Auftragsnummern in einen Tempstring - in diesem stehen dann die Auftragsnummern mit Komma voneinander getrennt.

Also z.B. tempstring enthält dann '2,14,23,48,55'

Soooo....nun würde ich gern in einem neuen Schritt ermitteln wieviel Auftragsnummern in diesem String drinstehen weil ich eine weitere Zählschleife machen will.
ich nehme an das würde ich mit
for i := 0 to length(tempstring)-1 do.. machen


und nun würde ich gern den tempstring immer bis zum komma auslesen und dann zu der jeweiligen auftragsnummer etwas ausführen.
und das halt jeweils für alle auftragsnummern, die in dem tempstring drinstehen.

wie kann ich das realisieren ?


vielen dank schonmal

mfg

carsten
Carsten
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#2

Re: String zerlegen, auslesen und weiterverwenden

  Alt 28. Sep 2005, 14:11
die funktion pos ist dein freund!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: String zerlegen, auslesen und weiterverwenden

  Alt 28. Sep 2005, 14:13
ExplodeExplode sollte das sein, was du suchst.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.186 Beiträge
 
Delphi 12 Athens
 
#4

Re: String zerlegen, auslesen und weiterverwenden

  Alt 28. Sep 2005, 14:23
Nun ja, du könntest zum einem den String Zeichen für Zeichen abarbeiten und prüfen was dat für'n Zeichen ist ... wenn es ein komma ist, dann steht ja die Zahl zwischen diesem und dem vorher gefundenem Komma.

Es ist aber auch möglich, per PosEx das nächste komma zu suchen.


oder du machst es dir einfacher:

entder ein dynamisches array

Delphi-Quellcode:
Var XYZ: Array of String;

//wert hinzufügen
SetLength(XYZ, Length(XYZ) + 1);
XYZ[High(XYZ)] := ...;


Anzahl := Length(XYZ);
oder noch einfacher ... ein TStringList, da kann man per .add etwas hinzufügen und mit .count die Anzahl erhalten.


@idp: pos findet nur das erste komma

und luckies explode kann man natürlich auch verwenden, aber warum erst die einzelstrings zusammenmixen und dann wieder trennen, wenn man die ja gleich getrennt lassen kann?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#5

Re: String zerlegen, auslesen und weiterverwenden

  Alt 28. Sep 2005, 14:31
Zitat von himitsu:
@idp: pos findet nur das erste komma
das war ja nur der anfang naürlich muss er dann ja auch noch ein wenig weiterdenken!
  Mit Zitat antworten Zitat
stonimahoni

Registriert seit: 12. Okt 2004
146 Beiträge
 
Delphi 7 Professional
 
#6

Re: String zerlegen, auslesen und weiterverwenden

  Alt 29. Sep 2005, 08:10
Moin Leute...


hatte gestern ein wenig rumprobiert aber irgendwie komme ich auf keinen grünen Zweig

Mit den ganzen Funktionen hatte ich bisher noch nie gearbeitet, daher sind die absolut neu für mich und ich hab bei den Teilen irgendwie ein Verständnisproblem

Ich glaub ich bekomme hin dass ich mir per pos das erste komma vielleicht auch alle weiteren kommasanzeigen bzw auslesen lassen kann, aber ich wüsste so nicht was mir das bringt *aufdemschlauchsteh*

vom denken her würde ich das so angehen :

für die gesamtlänge des tempstrings soll immer bis zum nächsten komma gelesen werden und für die zahlen jeweils vor dem komma "als gesamtes" ( ist ja eine auftragsnummer z.b. 13 oder 128) möchte ich dann eine prozedur ausführen (abarbeitung der einzelnen zahlenblöcke)

hoffe ihr versteht was ich meine


*solangsamverzweifelt*


mfg

carsten
Carsten
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#7

Re: String zerlegen, auslesen und weiterverwenden

  Alt 29. Sep 2005, 08:27
Du erstellst Dir eine TStringList-Instanz, weist dieser deinen String in die Eigenschaft CommaText zu und vòila, du hast:
1. die Anzahl der Auftragsnummern (Count).
2. Die Nummern selber (Items[Index]).
Ich hoffe, ich konnte helfen.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#8

Re: String zerlegen, auslesen und weiterverwenden

  Alt 29. Sep 2005, 08:27
Hai stonimahoni,

wie schon erwähnt würde ich das ganze mit einer StringListe machen. Das ganz könnte dann zum Beispiel so aussehen:
Delphi-Quellcode:
procedure TForm1.btn_GetAuftraegeClick(Sender: TObject);
var
  sl: TStringList;
  ndx: integer;
begin
  if DBGrid1.SelectedRows.Count > 0 then // Ist etwas markiert?
  begin
    sl := TStringList.Create; // StringListe erzeugen
    try
      with DBGrid1.DataSource.DataSet do
      begin
        for ndx := 0 to DBGrid1.SelectedRows.Count - 1 do // Alle markierten Datensätze durchlaufen
        begin
          GotoBookmark(pointer(DBGrid1.SelectedRows.Items[ndx])); // Zum markierten DS springen
          sl.Add(FieldByName('auftragsnummer').AsString); // Auftragsnummer aus der Tabelle lesen
        end
      end;
      ShowMessage(Format('Es gibt %d Auftragsnummern', [sl.Count])); // Anzahl der Einträge anzeigen
    finally
      sl.Free;
    end;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#9

Re: String zerlegen, auslesen und weiterverwenden

  Alt 29. Sep 2005, 09:09
damit man mit den string-funktionen lernt...

Delphi-Quellcode:
var
 stelle:integer;
 anr:integer; // auftragsnummer
 anrstr:string // hilfsstring

...
// z.b. tempstr='2,14,23,48,55,'
while tempstr<>'do
begin
  stelle:=pos(',',tempstr); // position des ersten auftretens von ','

  if stelle>0 then // stelle gefunden
    anrstr:=copy(tempstr,stelle-1); // kopiert aus tempstr die stellen 1..stelle-1

    if trystrtoint(anrstr,anr) then; // anrstr in zahl umwandeln
      machwas(anr) // verarbeiten
    else
      showmessage('keine zahl');

    delete(tempstr,1,stelle); // löschen bis nach 1. komma
  end
  else
    tempstr:='';
end;
ps. hoffe, das die string-indizes richtig sind
  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 19:22 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