![]() |
Hilfe- Wie lese ich eine komplexe DB Datei zum editieren aus
Wie kann ich aus einer großen chaotischen (2000+ Einträge) Datenbank-Datei,
spefizische Datensätze in Edit und Memofelder auslesen? Das Problem ist, das in der Datei die Datensätze wild durch einander liegen. Nun habe ich die Datei durch Delphi in ein nicht sichtbares Memo offnen lassen, hierbei ist das Problem das Delphi automatisch einen Zeilenumbruch Zitat:
Zitat:
Name bis zum" = "Dann jeweise 9 Datenzeilen jeweils durch ein ";" getrennt wobei das 9. ";" das Ende des Datensatzes makiert. Will die Datei in ein Memo laden un sie dann in die einzelnen Bearbeitungsforms verteilen Hat jemand eine Idee, wie ich (a) zum Bsp alle enthaltenen "Info_..." oder "SVM_")-Strings finden kann und zwar mit samt aller zudehörigen Dateneintragungen um sie dann z.B. vorläufig in verschiedenen Listboxen zu speichern? (b) die Daten strings, dann in Name bis zum "=" und die 9 Werte jeweils bis zum nächsten ";" aufzusplitten kann um sie auf Edit-Felder, Tabellen, Memos und Comboboxen zum editieren zu verteilen ? ____________________ Kennt jemand ein Gutes Tutorial dazu, meine überlegung ist, ich muss die Daten in ein Memo lesen ohne Zeilen umbruch. Dann muss ich anhander der ersten "Marker"-Wörter in den Strings wie Info oder SVM die Daten in List-Boxen aufteilen. Und hier ist der Knackpunkt wie kann ich die unterschiedlich langen 9 Werte und Bezeichernamen die durch ; unterteilt und beendet werden in eine Tabelle oder ein Memofeld korrekt auslesen lassen. |
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Man könnte die datei auch ine CSV-DataSet laden
|
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Zitat:
CSV-DataSet ? - finde ich nicht in der D6-Hilfedatei |
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Ist standardmäßig auch nicht dabei. Aber z.B. in der JVCL.
|
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Zitat:
Danke habe diese Seite ![]() Also downloaden installieren und wie weiter?? |
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Erst JCL dann JVCL installieren, TJvCSVDataSet auf deine Form ziehen, Datei auswählen, Feldstruktur festlegen, öffnen.
|
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Ok
habe soeben die JVCL331CompleteJCL199-Build2551.7zMarch 19, 2007 vom Mirror geladen und die JVCL331CompleteJCL199-Build2551.zipMarch 19, 2007 vom Mirror geladen werde sie nun wie du geschrieben hast nacheinander installieren |
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Tolll
weis jemand wie ich an das verflucht Delphi 6 Update 2 herankomme? JVCL meckert nämlich das es nicht installiert ist Habe nun 1 Stunde versucht es von der Borlandseite zuziehen ohne erfolg. Ich bekomme mein Produkt nicht auf der Borland seite so registiert das mir die Seite erlaubt das Update zu ziehen :wall: :wall: :wall: |
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Zitat:
BTW. Du meinst die CodeGear-Seite, oder? |
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Genau Codegear
Bin auf dieser Seite ![]() ganz unter ist version 6 Dann einloggen .... Und dann kommt dieser Fehler Zitat:
|
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Hm. Sollte das nicht der Registrierungsexperte erledigen?
|
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Zitat:
|
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Der Registierungagent der auf der D6 CD dabei ist scheint nicht mehr sehr compatibel zusein
Die Seiten die er öffnen will existieren garnicht mehr. Und diese ver***** Updates gibt es nur exklusiv über Codegear - Zumindest finde ich keine andere Seite, D6 die die Updates hostet. habe zwar die Seriennummer und den Autorisierungsschlüßel nur was nutzt der mir. |
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Google Suche findet einen FTP der aber ausgerechnet die Version 6 nicht hat
|
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
So
habe soeben einen Server in Taiwan gefunden der das Update 2 drauf hatte. Denn auf dieser seite steht der genaue Dateiname der Delphi-Updates und google übernahm dann den Rest ![]() Installation verlief ohne Probs und JVCL ist nun auch drauf. Dann will ichs mal jetzt versuchen, also Zitat:
|
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Sorry aber TJvCSVDataSet finde ich nicht
ist da was schiefgelaufen? habe nun Leisten JV Scrollbar, Jv Edits ,... und wo drunter soll nun das TJvCSV sein? |
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Delphi-Quellcode:
Habe nun etwas gefunden aber kein TJvCSVDataSetJvCSVBase1: TJvCSVBase; JvCSVEdit1: TJvCSVEdit; JvCSVComboBox1: TJvCSVComboBox; JvCSVCheckBox1: TJvCSVCheckBox; JvCSVNavigator1: TJvCSVNavigator; |
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Also, ich versteh nicht, wieso man das mit einer CSV-Komponente machen soll.
Das vorliegende Format ist das einer 'INI'-Datei. Man kann eine entsprechnde Komponente verwenden (TIniFile, TMemIniFile), wenn man Zugriff auf die einzelnen Segmente '[blabla]' haben möchte. Wenn nicht, reicht auch eine Stringlist. Für die Trennung der per ';' getrennten Daten würde ich auf die Eigenschaften 'DelimiterChar' und DelimitedText der TStringlist zurückgreifen. Einlesen der Datei geht so:
Delphi-Quellcode:
Suchen geht so:
Var
Datei : TStringlist; Begin Datei := TStringlist.Create; Datei.LoadFromFile('DeinDateiname'); ...
Delphi-Quellcode:
Und unterteilen der durch Semikolon getrennten Teile so:
Procedure SucheNamenBeginnendMit (Datei : TStringlist; NamensTeil : String);
Var i : Integer; Begin For i:=0 to Datei.Count - 1 do If Pos (NamensTeil, Datei[i])<>0 Then // Zeile gefunden End;
Delphi-Quellcode:
Da wird kein CSV benötigt.
Procedure ExtrahiereDaten (Datei : TStringList; aZeile : Integer; DatenEinerZeile : TStringlist);
Begin DatenEinerZeile.DelimiterChar := ';'; DatenEinerZeile.DelimitedText := Date.Values[aZeile] // Anschließend kann auf die Teile durch DatenEinerZeile[i] zugegriffen werden End; |
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Zitat:
Bin diesem Vorschlag mal gefolgt
Delphi-Quellcode:
Damit bekomme ich die Daten (hier nur eine Suchanfrage) grob auseinander sortiert anhand der z.B. ersten 6 Zeichen.
procedure TForm1.Button1Click(Sender: TObject);
Var Datei : TStringlist; mecount : integer; i : Integer; begin Datei := TStringlist.Create; memo1.WordWrap:=false; memo1.Lines.LoadFromFile('C:\test\text.ini'); mecount:=0; mecount:=(memo1.Lines.count); end; procedure TForm1.Button2Click(Sender: TObject); var ii : Integer; begin For ii:=0 to memo1.Lines.Count - 1 do begin If leftstr(memo1.Lines[ii],6)='INFO_S' then begin listbox1.Items.Add(memo1.Lines.Strings[ii]) end else end; end; Nur kann mir jedmand sagen wie genau ich nun die durch die ";" getrenten Daten im String finde und einzeln aus dem String herausbekommen. Die Daten in der listbox sehen so aus: Zitat:
"..." bis = Edit1 von = "..." bis ;#1 = Edit1 von ;#1 "..." bis ;#2 = Edit1 ... von ;#9 "..." bis ;#10 = Edit1 Wie / Womit müsste ich eine Abfrage Routine schreiben |
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Delphi-Quellcode:
[/edit]
Function Split (Var aString : String; Const aDelimiter : String) : String;
Var p : Cardinal; Begin p := pos (aDelimiter, aString); if p = 0 then begin Result := aString; aString :=''; End Else Begin Result := Copy (aString,1,p-1); aString := Copy (aString, p+Length (aDelimiter),Maxint) End End; // Aufruf s := 'Eins=Zwei'; x := Split (s,'='); // jetzt ist x='Eins' und s='Zwei' :oops: Parameterdeklaration ': String' bei 'Var aString ...' eingefügt. So KANN das ja gar nicht funktionieren.... [edit] |
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Zitat:
_______________ Irgendetwas übersehe ich gerade
Delphi-Quellcode:
Hier meckert Delphi
So Testweise umgesetzt
... Function Split (Var aString; Const aDelimiter : String) : String; Var p : Cardinal; Begin (48) p := pos (aDelimiter, aString); (49) if p = 0 then begin (50) Result := aString; (51) aString :=''; (52) End Else Begin (53) Result := Copy (aString,1,p-1); (54) aString := Copy (aString, p+Length (aDelimiter),Maxint) (55) End (56) End; procedure TForm1.btselecteditClick(Sender: TObject); var s:string; begin s:='Info_hg=neu'; ed1.text := Split (s,'='); ed2.text:= s; end; end. Zitat:
|
Re: Hilfe- Wie lese ich eine komplexe DB Datei zum editieren
Hi,
ändere mal den Kopf der Funktion so ab
Delphi-Quellcode:
dann sollten die Fehlermeldungen weg sein.
Function Split (Var aString : String; Const aDelimiter : String) : String;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 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