Thema: Delphi Text aus Memo parsen

Einzelnen Beitrag anzeigen

Adrenalin

Registriert seit: 8. Sep 2012
16 Beiträge
 
#1

Text aus Memo parsen

  Alt 8. Sep 2012, 07:34
Guten Morgen
Ich hab vorhin im Netz eine Frage gelesen die ich recht interessant finde, bin jetzt auch nicht der Delphiprogrammierer muss ich dazu sagen, aber das ganze hat mich auf eine Idee gebracht die ich selber nutzen bzw. gebrauchen könnte.

Es geht dabei grob gesagt um folgendes:

Man hat ein Memo in dem man eine Art Ordner und Dateistruktur eingibt, welche dann per klick auf einen Button erstellt wird.

Erstmal nichts wildes dachte ich soweit, dann hab ich es mal selber probiert aber dabei kam eine ganze Menge murks raus.

Ich zeig mal welche Struktur das haben könnte:

Basis Pfad z.B. C:\users\Adrenalin\Desktop\Test

config.xml:enc
/skins
/data/defines.dat:blub
/temp
/app/styles/style.def:df

:enc ist ein Inhalt der aus z.B. einen anderen Memo auf der Form kommt und in die Datei config.xml geschrieben wird bei dessen Erstellung.
Das gleiche gilt für die Datei style.def

Nun sollte man nachdem man einen Button auf der Form geklickt hat folgende Struktur auf dem Desktop vorhanden sein:

[Inhalt Ordner Test]
config.xml
skins
data
|
=>defines.dat
temp
app
|
|=>styles
|====>style.def

Also was mir erheblich Kopfschmerzen bereitet ist das die Struktur ja beliebig anlegbar ist von den Ordnern her sowie welche Datei in welchen Ordner muss.

Da ich nicht viel mit Delphi mache hab ich mir dazu die Hilfe durchgelesen, mir vielen dann Sachen wie Pos, ForceDirectories und der gleiche ins Auge... Aber damit kam ich auch nicht wirklich weiter...

Dann hat jemand noch ein Beispiel dazu gepostet wie man es machen kann. Das Problem dabei ist das es wohl fehlerhaft war, da nur Dateien (mit viel Glück) aber keine Ordner erstellt werden, Jetzt sitz ich hier seit Stunden rum um bekomme einfach nicht heraus wie man das richtig machen kann, dass eben genau das was man im Memo definiert hat, auch so auf der Festplatte landet...

Hier mal der Code vom Posting vielleicht hat jemand Lust mal drüber zu sehen und findet ggf. den Fehler darin:

Delphi-Quellcode:
procedure ProcessLine(const BasePath : string; line: string);
var
   path, filename, data: string;
   colonPos: integer;
begin
   colonPos := pos(':', line);
   if colonPos > 0 then
   begin
      data := copy(line, colonPos + 1);
      delete(line, colonPos, MAXINT);
   end;
   line := TPath.Combine(BasePath, normalizePath(line));
   if ExtractFileExt(line) = 'then
      path := line
   else begin
      path := ExtractFilePath(line);
      filename := line;
   end;
   ForceDirectories(path); //ensure that the folder exists
   if filename <> 'then
      TFile.WriteAllText(filename, data);
end;
Wenn man obigen Code auf einen Button legt kommt folgendes dabei heraus was nicht wirklich richtig ist:

Basis Pfad enspricht: C:\Users\Adrenalin\Desktop\test
Ordner test wird erstellt.
Darin befindet sich die Datei config.xml

Das wars auch schon

Aufgerufen wurde das ganze über:

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to Memo1.Lines.Count -1 do
  begin
    ProcessLine(Edit1.Text, Memo1.Lines.Strings[I]);
  end;
end;
Was ich jetzt daran nicht verstehe ist:
Wieso werden keine Ordner erstellt?
Woher oder wie programmiert man das ganze so, das auch die richtige Datei im richtigen Ordner landet?

Warum überhaupt so eine Struktur im Memo liegt hat der andere (finde Posting leider grad nicht)
gut erklart wenn jemand gar keine Ahnung hat wie CSV Dateien oder vergleichbares aufgebaut werden müssen, ist die Eingabe der Ordnerstruktur so wie sie da jetzt im Memo vorliegt relativ einfach zu verstehen, den Grund fand ich plausibel.

Viele Grüsse
  Mit Zitat antworten Zitat