AW: Rekursiv Suchen
Da Du anscheinend mein Post (#5) nicht willst...
.. zerlege ich deinen Code von Post #1
Delphi-Quellcode:
Deine Routine findet ein Verzeichnis, keine Datei!
var f : integer;
eingabe, Parameter : string; X : TSearchRec; begin writeln('FRP to PDF'); Writeln(''); Writeln('Verzeichnis eingeben:'); readln(eingabe); Parameter := 'PFAD'; if eingabe = Parameter +'/dir' then begin Writeln(Parameter); if FindFirst(Parameter, faAnyFile, X) = 0 then try // Hier fehlt ein an den Parameter angehängtes '*.*' oder direkt '*.FRP', notwendig, damit FindFirst auch nach Files sucht repeat FRPzuPDF(Parameter,ChangeFileExt(Parameter,'.pdf')); // Hier sollte eigentlich was mit x.Name gemacht werden, sprich dem gefundenen Dateiname. In Parameter steht ja nur ein Verzeichnis und kein Dateiname !! until FindNext(X) = 1; //Hier kommt immer ne' Endlosschleife // Und wie schon mehrfach geschrieben '<> 0' finally FindClose(X); Writeln('Konvertierung erfolgreich'); end; end; Wenn deine Suche mit *.* gemacht würde, dann würde er Filenamen in X zurückgeben, sprich die Dateien, welche Du ja eigentlich konvertieren willst. Da Du diese aber nicht benutzt, passiert auch nichts. Er spring bei <> 0 direkt wieder raus, da er ja das Verzeichnis schon gefunden hat und kein weiteres (gleiches) findet.. So, jetzt schaust Du DIr mal die Funktion in meinem Post #5 oder den Post von Sir Rufo #8 an, da ist genau das hier geschriebene gemacht worden.. |
AW: Rekursiv Suchen
Mir leuchtet die if-Abfrage nicht ein, warum dann überhaupt eine Eingabe machen lassen, wenn es sowieso nur für das eine Verzeichnis gilt.
|
AW: Rekursiv Suchen
nene das ist nur zum testen ein festes Verzeichnis
Delphi-Quellcode:
Im Debug Modus ist er genau 8x die Prozedur durchgegangen also hat sozusagen geklappt. Aber die Dateien wurden nicht konvertiert. Ich schau mir jetzt die Prozedur nochmal an. Diese geht aber eigentlich.
var f : integer;
eingabe, Parameter : string; SearchRec : TSearchRec; begin writeln('FRP to PDF'); Writeln(''); Writeln('Verzeichnis eingeben:'); readln(eingabe); Parameter := 'C:\Dokumente und Einstellungen\jgross\Desktop\TestSpeichern\'; //Für Testzwecke -> Später noch ändern if eingabe = Parameter +'/dir' then begin if FindFirst(Parameter+'*.*', faDirectory, SearchRec) = 0 then try repeat if (SearchRec.Name <> '.') then FRPzuPDF(Parameter,ChangeFileExt(Parameter,'.pdf')); until FindNext(SearchRec)<> 0; //Hier kommt immer ne' Endlosschleife finally FindClose(SearchRec); Writeln('Konvertierung erfolgreich'); end; end; Ich glaube ich habe meinen Fehler gefunden. Die Prozedur möchte den genauen Namen zurück haben. Sie kriegt aber nur den Pfad ohne Dateinamen. |
AW: Rekursiv Suchen
Ein erster Schritt wäre wirklich mal, die Antwortbeiträge zu lesen.
Delphi-Quellcode:
Könnte helfen.
FRPzuPDF(Parameter,ChangeFileExt(x.Name,'.pdf'));
|
AW: Rekursiv Suchen
Zitat:
Delphi-Quellcode:
steht der Dateiname ohne Pfadangabe :warn:
TSearchRec.Name
|
AW: Rekursiv Suchen
Ich weiss, dass hier solche Vorschläge nicht gern gesehen sind. Aber vielleicht sollte der TE erstmal lernen, wie man 1) Code ordentlich einrückt, damit er leserlich ist und 2) den Debugger bedient, damit man sich nicht drei Seiten lang völlig lernresistent im Kreis bewegt und eine Copy & Paste-Lösung nach der anderen probiert und es immernoch nicht hinbekommt? Man man man ... :roll:
|
AW: Rekursiv Suchen
Liste der Anhänge anzeigen (Anzahl: 1)
Habe mithilfe eines Arbeitskollegens das Programm komplett umgeschrieben:
Bekomme jetzt eine Exception... Hier der Code:
Delphi-Quellcode:
Im Anhang ist die Exception...
program FRPtoPDF;
uses Forms, SysUtils, Math, ShellApi, frxClass, frxExportPDF, FR_Class, PsFR_E_Main, PsFR_E_PDF, Graphics; {$AppType Console} function FRPzuPDF(AFRPFile, APDFFile : string): boolean; var frReport : TfrReport; PDFExport : TPsfrPDFExport; begin Result := false; if not FileExists(AFRPFile) then exit; if FileExists(APDFFile) then if not DeleteFile(APDFFile) then exit; frReport := TFrReport.Create(NIL); PDFExport := TPsfrPDFExport.Create(NIL); try PDFExport.ShowDialog := false; frReport.ShowProgress := false; try frReport.LoadPreparedReport(AFRPFile); frReport.ExportTo(PDFExport, APDFFile); except exit; end; finally PDFExport.Free; frReport.Free; end; Result := true; end; function VerzeichnisMitFRPzuPDF(PfadUndDateimaske: string; SubDirs: boolean): boolean; var X : TSearchRec; Pfad: string; begin Result:=false; if FindFirst(PfadUndDateimaske, faAnyFile, X) = 0 then try repeat Write(ExtractFilePath(PfadUndDateimaske)+X.Name+' --> '+ChangeFileExt(ExtractFilePath(PfadUndDateimaske)+X.Name,'.pdf')+'...'); Result:=FRPzuPDF(ExtractFilePath(PfadUndDateimaske)+X.Name,ChangeFileExt(ExtractFilePath(PfadUndDateimaske)+X.Name,'.pdf')); if not Result then begin Writeln('Fehler!'); break; end else Writeln('OK'); until FindNext(X) <> 0; finally FindClose(X); end; if Result then begin if SubDirs then begin Pfad:=ExtractFilePath(PfadUndDateimaske); if FindFirst(Pfad+'*.*', faDirectory, X) = 0 then try repeat if (X.Name <> '.') and (X.Name <> '..') and ((X.Attr and faDirectory) <> 0) then begin Result:=VerzeichnisMitFRPzuPDF(ExtractFilePath(PfadUndDateimaske)+X.Name+'\'+ExtractFileName(PfadUndDateimaske),SubDirs); if not Result then break; end; until FindNext(X) <> 0; finally FindClose(X); end; end; end; end; var Parameter : string; SubDirs: boolean; begin Writeln('FRP to PDF'); if ParamCount<1 then exit; Parameter := ParamStr(1); if Copy(Parameter,Length(Parameter),1)<>'\' then Parameter:=Parameter+'\'; if ExtractFileName(Parameter)='' then Parameter:=Parameter+'*.FRP'; SubDirs:=(ParamCount>1) and (AnsiUpperCase(ParamStr(2))='/S'); // /S für SubDirectorys VerzeichnisMitFRPzuPDF(Parameter,SubDirs); end. |
AW: Rekursiv Suchen
Zitat:
Frage doch deinen Arbeitskollegen. Bitte beschäftige dich mit dem Debugger und wie man ihn verwendet! Ansonsten gibt's noch andere schöne Lehrstellen im handwerklichen Bereich, wo man mehr mit den Händen arbeitet. Kann auch sehr schön sein! |
AW: Rekursiv Suchen
Ich würde gerne wisssen wie ich die Exception löse. Mein Arbeitskollege ist auch überfragt...
Die Exception tritt auf wenn er in ein Unterverzeichnis möchte... |
AW: Rekursiv Suchen
Welche Zeile / Anweisung? Wie sind die Werte der Parameter? An welchem Datum ist Weihnachten? :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz