![]() |
bei datei laden ';' ignorieren...
Hallo Leute,
Also ich habe es einfach noch nicht hingekriegt mein Problem zu lösen. Ich habe eine datei, in der die zeilen, die mit ";" beginnen nicht geladen werden dürfen. Jetzt nur wie ignoriere ich diese Zeilen? Ich lade jetzt die daten in ein stringgrid, nur möchte ich ungerne meinen ganzen code umschreiben. Nur wie mache ich das jetzt? ich denke mit RightStr und LeftStr sollte ich einfach an das erste zeichen rankommen, aber wie sag ich dass er dann diese zeile nicht laden darf? Naja ich denke ihr wisst schon was ich meine. Hier mal mein code zum laden der Daten:
Delphi-Quellcode:
hoffe ihr könnt mir eine bei einer Lösung helfen, die nicht den ganzen code verändert.
procedure TForm1.Button1Click(Sender: TObject); //sfv file öffnen
var i : integer; begin if OpenDialog1.Execute then begin SL.LoadFromFile(OpenDialog1.FileName); //sfv daten in stringlist speichern SL.Delimiter :=' '; SLSub.Clear; StringGrid1.RowCount:=SL.Count+1; //stringgrid zeilen erstellen for I := 0 to SL.Count - 1 do begin SLSub.DelimitedText := SL[I]; StringGrid1.Cells[0, (1+(I))]:=SlSub[0]; //dateiname in stringgrid einfügen StringGrid1.Cells[2, (1+(I))]:=Uppercase(SlSub[1]); //hash wert in stringgrid einfügen StringGrid1.Cells[1, (1+(I))]:='ready'; //status gleich ready end; //SLSub.Free; //sl.Free; Button2.Enabled:=true; Button4.Enabled:=false; end; end; vielen dank schonmal greez headi |
Re: bei datei laden ';' ignorieren...
Hallo Headi,
ohne deinen sonstigen Code zu verändern? Du kannst die Zeilen direkt nach dem LoadFromFile() entfernen:
Delphi-Quellcode:
Nur eine von vielen möglichen Lösungen für dein Problem.
procedure DeleteComments(s: TStrings; meta: char);
var i: integer; begin for i := Pred(s.Count) downto 0 do if Copy(s[i], 1, 1) = meta then s.Delete(i); end; Neujahrsgrüße vom marabu |
Re: bei datei laden ';' ignorieren...
Hier mein Vorschlag:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject); //sfv file öffnen
var i : integer; begin if OpenDialog1.Execute then begin SL.LoadFromFile(OpenDialog1.FileName); //sfv daten in stringlist speichern //ergänzt: i := 0; While i < SL.Count do begin If SL[i][1] = ';' then SL.Delete(i) else Inc(i); end; SL.Delimiter :=' '; SLSub.Clear; StringGrid1.RowCount:=SL.Count+1; //stringgrid zeilen erstellen for I := 0 to SL.Count - 1 do begin SLSub.DelimitedText := SL[I]; StringGrid1.Cells[0, (1+(I))]:=SlSub[0]; //dateiname in stringgrid einfügen StringGrid1.Cells[2, (1+(I))]:=Uppercase(SlSub[1]); //hash wert in stringgrid einfügen StringGrid1.Cells[1, (1+(I))]:='ready'; //status gleich ready end; //SLSub.Free; //sl.Free; Button2.Enabled:=true; Button4.Enabled:=false; end; end; |
Re: bei datei laden ';' ignorieren...
warum nicht einfach in der schleife, die eh schon da ist?
Delphi-Quellcode:
for I := 0 to SL.Count - 1 do
begin if SL[I][1] = ';' then // Wenn 1. Zeichen = ';' Continue; // dann weiter SLSub.DelimitedText := SL[I]; StringGrid1.Cells[0, (1+(I))]:=SlSub[0]; //dateiname in stringgrid einfügen StringGrid1.Cells[2, (1+(I))]:=Uppercase(SlSub[1]); //hash wert in stringgrid einfügen StringGrid1.Cells[1, (1+(I))]:='ready'; //status gleich ready end; |
Re: bei datei laden ';' ignorieren...
Jo, stimmt. Das geht auch:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject); //sfv file öffnen
var i : integer; begin if OpenDialog1.Execute then begin SL.LoadFromFile(OpenDialog1.FileName); //sfv daten in stringlist speichern SL.Delimiter :=' '; SLSub.Clear; StringGrid1.RowCount:=SL.Count+1; //stringgrid zeilen erstellen for I := 0 to SL.Count - 1 do begin if SL[I][1] <> ';' then // <-- hier ergänzen begin // <-- hier auch ergänzen SLSub.DelimitedText := SL[I]; StringGrid1.Cells[0, (1+(I))]:=SlSub[0]; //dateiname in stringgrid einfügen StringGrid1.Cells[2, (1+(I))]:=Uppercase(SlSub[1]); //hash wert in stringgrid einfügen StringGrid1.Cells[1, (1+(I))]:='ready'; //status gleich ready end; // <-- und hier ergänzen end; //SLSub.Free; //sl.Free; Button2.Enabled:=true; Button4.Enabled:=false; end; end; |
Re: bei datei laden ';' ignorieren...
Vielen vielen dank Euch allen!!
Hab zuerst den letzten code probiert, den habe ich allerdings nicht hingekriegt. Also habe ich den ersten code von Martin K genommen, der funktioniert perfekt!! vielen dank mfg headi |
Re: bei datei laden ';' ignorieren...
Mein erster Code funktioniert natürlich genauso, allerdings kann es bei großen Dateien länger Dauern, da die Schleife 2x durchlaufen wird.
Am besten ist es, wenn du meinen letzten aus Beitrag #5 nimmst, wahrscheinlich hast du nur begin oder end vergessen. Ich hab dir nochmal an jede ergänzte Zeile den Kommentar drangemacht. Ich würde diesen Code aus #5 dann nehmen, da er schneller ist. Insgesamt sind 3 Zeilen zu ergänzen, am besten ersetzt du den kompletten Code via Kopieren und Einfügen, dann kannste nix falsch machen. Gruß, Martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 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 by Thomas Breitkreuz