![]() |
Re: eBay Turbolister CSV einlesen
Zitat:
Was man dagegen unternehmen kann, weiß ich im Moment nicht. Habe die Geschichte hier jetzt nur überflogen. Zitat:
Code:
Ich habe Einleseroutinen in Klassen integriert, die das beherrschen. Aber auf die Schnelle einlesen können habe ich deine Datei auch nicht. :?
Bsp ==> Zelle: "Ja"-Sager --> Zelle in Datei: """Ja""-Sager"
Zelle: Auto;Bus --> Zelle in Datei: "Auto;Bus" Zelle: ach;"nee" --> Zelle in Datei: "ach;""nee""" |
Re: eBay Turbolister CSV einlesen
Zitat:
Das mit dem HTML Code ist mir wirklich vorher nicht aufgefallen. Aber danke für die Aufklärung! Ich sehe natürlich trotzdem noch ein Problem beim Einlesen. Muss ich denn die Datei in ein Memo schreiben? Oder gibt es eine Möglichkeit die Datei Zeile für Zeile auszulesen? Es wundert mich wirklich, dass sich noch keiner damit befasst hat :wink: Naja scheint man nicht oft zu brauchen. MfG Benny |
Re: eBay Turbolister CSV einlesen
Die Datei mußt Du nicht in ein Memo schreiben.
Zeileweises einlesen geht z.b. so:
Delphi-Quellcode:
Der Code hat aber auch das Problem mit dem ; im HTML Code.
procedure TForm1.Button1Click(Sender: TObject);
var EbayFile: TextFile; data:String; dataItems: TStringdynarray; i:Byte; r:Integer; begin AssignFile(EbayFile,ExtractFilePath(ParamStr(0))+'./turbolister.csv'); Reset(EbayFile); r:=0; While not eof(EbayFile) do begin ReadLn(EbayFile,data); dataItems:=explode(';',data); if r > StringGrid1.RowCount -1 then StringGrid1.RowCount:=r; for i:=1 to length(dataItems) -1 do begin if StringGrid1.ColCount < i then StringGrid1.ColCount:=i; StringGrid1.Cells[i,r]:=dataItems[i]; end; Memo1.Lines.Add(data); inc(r); end; CloseFile(EbayFile); end; Mit Streams sollte das auch gehen, damit habe ich aber keine Erfahrungen. Grüße Klaus |
Re: eBay Turbolister CSV einlesen
Hmm,
mein Compiler kennt TStringdynarray nicht! Muss ich etwas einbinden? ERLEDIGT!! Unit Types musste eingebunden werden :D Danke Gruß Benny |
Re: eBay Turbolister CSV einlesen
Hi,
Also danke, ich denke mir reicht das nun für's erste!! Hab zwar hier und da noch ein paar Probleme, aber ich denke die werde ich Meistern. Wenn nicht, dann werde ich mich hier wieder im Board melden! Denn hier bekommt man einfach einen super Support. :thumb: Hier meine Lösung für den HTML CODE im CSV
Delphi-Quellcode:
Evtl sollte man noch die Anführungszeichen bei der HTML Zelle entfernen, allerdings weis ich den Befehl momentan nicht :P
function CSVExplode(const Separator, S: string; Limit: Integer = 0): TStringDynArray;
var SepLen: Integer; F, P: PChar; ALen, Index: Integer; begin SetLength(Result, 0); if (S = '') or (Limit < 0) then Exit; if Separator = '' then begin SetLength(Result, 1); Result[0] := S; Exit; end; SepLen := Length(Separator); ALen := Limit; SetLength(Result, ALen); Index := 0; P := PChar(S); while P^ <> #0 do begin F := P; //Position des HTML Codes herausfinden! if pos('"',P) = 1 then begin P := AnsiStrPos(P, PChar('";')); end else P := AnsiStrPos(P, PChar(Separator)); //ENDE Position des HTML Codes herausfinden! if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F); if Index >= ALen then begin Inc(ALen, 5); SetLength(Result, ALen); end; SetString(Result[Index], F, P - F); Inc(Index); if P^ <> #0 then Inc(P, SepLen); end; if Index < ALen then SetLength(Result, Index); end; Ist wohl schon zu spät. Ebenfalls gibt es ein Problem, sobald ein Zeilenumbruch im HTML Text zu sein scheint! Wenn jemand weiß, wie ich das regeln kann, dann bitte ich um Hilfe! Denn es kommt eine Zugriffsverletzung :( Also Danke nochmal Gruß Benny |
Re: eBay Turbolister CSV einlesen
dafür habe ich mir auch was einfallen lassen, ich hatte genu das problem ...einfach einen stringreplace drüberlaufen lassen (also beim einlesen der einzelnen zeilen) die leerzeichen mit zb $%& füllen und später einfach umgekehrt ! das geht 100%
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 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