![]() |
Textdatei bearbeiten - der besete weg ?
Hi,
ich schreibe es mal in diese Sparte da es ja erst einmal nur eine Frage zum richtigen Lösungsweg ist. Ich möchte eine Textdatei bearbeiten deren Aufbau immer gleich ist. Die Datei wird von einem anderen Programm erstellt und verwendet als Seperator Anführungszeichen. Mein Ziel ist es die Schreibweise in dieser Datei einheitlich zu machen und zwar nach folgendem Schema: Erster Buchstabe im Wort ist immer Groß, alle anderen klein! Hier mal ein Auszug aus der Datei:
Code:
so soll es aussehen!
"MasterBlaster","","DefJam-Records","HipHop","US","12345","","0","","","",""
Manchmal sieht es dann aber zb. so aus:
Code:
Was würdet ihr mir zum beachten der Schreibweise empfehlen ?
"MASterBLASTER","","DefJam-RECORDS","HIPHOP","US","12345","","0","","","",""
Ein Record ? Oder einfach eine Funktion schreiben die beim einlesen der Datei alles überprüft? Die Datei ist ziemlich groß, im Moment 127kb, und ich bin mir nicht sicher welche art bearbeitung die schnellste / sauberste ist. Und so gut das ich schnell mal alle möglichen Wege ausprobiere bin ich noch nicht ;) Gruß Bit |
Re: Textdatei bearbeiten - der besete weg ?
Hai Bit Juggler,
das habe ich mal aus dem Kopf gemacht (also ungetestet!);
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var sl1, sl2 : TStringList; ndx1 : Integer; function UpperLowerCase (const value : String) : String; var s_tmp1, s_tmp2 : String; begin s_tmp1 := AnsiLowerCase(value); // Alles in klein s_tmp2 := s_tmp1[1]; // Erstes Zeichen holen result := StuffString (s_tmp1,1,1,AnsiUpperCase (s_tmp2)); // Erstes Zeichen groß und ersetzen. end; begin sl1 := TStringList.Create; sl2 := TStringList.Create; try sl1.Clear; sl1.LoadFromFile('mytext.csv'); // Datei Laden for ndx1 := 0 to sl1.Count -1 do begin sl2.clear; sl2.Delimiter := ','; // Trennzeichen sl2.QuoteChar := '"'; // Quotingzeichen sl2.DelimitedText := sl1.Strings[ndx1]; sl2.Strings[0] := UpperLowerCase(sl2.Strings[0]) // Umwandlung 1. Wort sl2.Strings[2] := UpperLowerCase(sl2.Strings[2]) // Umwandlung 3. Wort. sl2.Strings[3] := UpperLowerCase(sl2.Strings[3]) // Umwandlung 4. Wort. sl1.Strings[ndx1] := sl2.DelimitedText ; // Formatierenstring zurückschreiben end; sl1.SaveToFile('mytext_neu.csv'); // Datei speichern finally FreeAndNil (sl1); FreeAndNil (sl2); end; end; |
Re: Textdatei bearbeiten - der besete weg ?
Hi Sharky,
danke für Deine Hilfe funktioniert einwandfrei! Von StuffString hab ich bis heute noch nie was gehört ;) Leider kommt das ganze wohl doch nicht so für mich in Frage denn wenn ein Name aus mehreren einzelnamen besteht dann habe ich dann das Ergebniss: "Hans mustermann" anstatt "Hans Mutermann". Naja aber anhand Deines Listings hab ich ja einen ansatz den ich ausbauen kann. Nur ob das in anbetracht der vielen Schreibmöglichkeiten überhaupt möglich ist... Nun ja wir werden sehen :) Gruß Bit P.S. Lehrreich war das ganze aber auf alle Fälle, besonderst die Stringlisten biete einige sehr intressante Funktionen. |
Re: Textdatei bearbeiten - der besete weg ?
Die Stringliste hat allerdings einen Nachteil: bei größeren Text-Dateien funktioniert sie leider nicht mehr. Ich habe hier in der Schule leider kein delphi und kann dir nicht sagen, ab wann sie schlapp macht.
Aber ich denke für eine normal große Textdatei reicht's vollkommen ;-) Eine alternative wäre einfach mit den alten Befehlen zu arbeiten und bis zum EOF die Datei auslesen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 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