AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Rekursiv Suchen

Ein Thema von GroZ · begonnen am 9. Nov 2015 · letzter Beitrag vom 11. Nov 2015
Antwort Antwort
Seite 3 von 6     123 45     Letzte » 
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#21

AW: Rekursiv Suchen

  Alt 9. Nov 2015, 17:25
Da Du anscheinend mein Post (#5) nicht willst...

.. zerlege ich deinen Code von Post #1

Delphi-Quellcode:
var f : integer;
    eingabe, Parameter : string;
    X : TSearchRec;
begin
  writeln('FRP to PDF');
  Writeln('');
  Writeln('Verzeichnis eingeben:');
  readln(eingabe);
  Parameter := 'PFAD';
  if eingabe = Parameter +'/dirthen
    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;
Deine Routine findet ein Verzeichnis, keine Datei!
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..
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: Rekursiv Suchen

  Alt 10. Nov 2015, 06:06
Mir leuchtet die if-Abfrage nicht ein, warum dann überhaupt eine Eingabe machen lassen, wenn es sowieso nur für das eine Verzeichnis gilt.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
GroZ

Registriert seit: 6. Jul 2015
Ort: Harz
167 Beiträge
 
Delphi 7 Personal
 
#23

AW: Rekursiv Suchen

  Alt 10. Nov 2015, 07:12
nene das ist nur zum testen ein festes Verzeichnis
Delphi-Quellcode:
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 +'/dirthen
    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;
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.
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.
Julian

Geändert von GroZ (10. Nov 2015 um 08:55 Uhr)
  Mit Zitat antworten Zitat
Zoot

Registriert seit: 30. Jan 2006
Ort: Hessen
110 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: Rekursiv Suchen

  Alt 10. Nov 2015, 10:25
Ein erster Schritt wäre wirklich mal, die Antwortbeiträge zu lesen.

FRPzuPDF(Parameter,ChangeFileExt(x.Name,'.pdf')); Könnte helfen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#25

AW: Rekursiv Suchen

  Alt 10. Nov 2015, 10:39
Ein erster Schritt wäre wirklich mal, die Antwortbeiträge zu lesen.

FRPzuPDF(Parameter,ChangeFileExt(x.Name,'.pdf')); Könnte helfen.
Nein, hilft so gar nicht ... denn im TSearchRec.Name steht der Dateiname ohne Pfadangabe
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#26

AW: Rekursiv Suchen

  Alt 10. Nov 2015, 12:52
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 ...
  Mit Zitat antworten Zitat
GroZ

Registriert seit: 6. Jul 2015
Ort: Harz
167 Beiträge
 
Delphi 7 Personal
 
#27

AW: Rekursiv Suchen

  Alt 10. Nov 2015, 12:56
Habe mithilfe eines Arbeitskollegens das Programm komplett umgeschrieben:
Bekomme jetzt eine Exception... Hier der Code:
Delphi-Quellcode:
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.
Im Anhang ist die Exception...
Miniaturansicht angehängter Grafiken
exception.jpg  
Julian
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.059 Beiträge
 
Delphi 10.4 Sydney
 
#28

AW: Rekursiv Suchen

  Alt 10. Nov 2015, 13:03
Habe mithilfe eines Arbeitskollegens das Programm komplett umgeschrieben:
Bekomme jetzt eine Exception... Hier der Code:
Was möchtest du jetzt von uns?
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!
  Mit Zitat antworten Zitat
GroZ

Registriert seit: 6. Jul 2015
Ort: Harz
167 Beiträge
 
Delphi 7 Personal
 
#29

AW: Rekursiv Suchen

  Alt 10. Nov 2015, 13:06
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...
Julian
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.288 Beiträge
 
Delphi 12 Athens
 
#30

AW: Rekursiv Suchen

  Alt 10. Nov 2015, 13:08
Welche Zeile / Anweisung? Wie sind die Werte der Parameter? An welchem Datum ist Weihnachten?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 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