AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Variablen in Prozudur übergeben

Ein Thema von -187- · begonnen am 2. Mär 2007 · letzter Beitrag vom 2. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#1

Variablen in Prozudur übergeben

  Alt 2. Mär 2007, 05:49
Morgen, ich habe nun noch ein Problem mit meinem Programm und krieg es nicht hin =)

Hier mal ein Teil-Code !

Delphi-Quellcode:
Program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  Windows,SysUtils,ImageHlp,Dialogs,ShellApi;

////Get Drives Procedure
var
  Drive: Char;
  Drives: array of string;
  Idx: Integer;
Procedure GetDrives(Filename:String);
begin
  SetLength(Drives, 0);
  Idx := 0;
  for Drive := 'Cto 'Zdo
  begin
    if GetDriveType(PChar(Drive + ':/')) = DRIVE_FIXED then
    begin
      SetLength(Drives, Idx + 1);
      Drives[Idx] := Drive + ':\';
      Idx := Idx + 1;
    end;
  end;
 
  if Length(Drives) > 0 then
    for Idx := Low(Drives) to High(Drives) do
     WriteLn(Drives[Idx]);
end;
//
 
////Deleting Files Procedure
var
  myFile : TextFile;
  APathFound: String;
  HDD: Char;
Procedure DeletingFiles(Filename:String);
  begin
  for HDD:='Cto 'Zdo
    if SearchForFile(HDD + ':\', Filename, APathFound) then
    begin
       repeat
          DeleteFile(ApathFound+Filename);
          WriteLn(myFile, ':: '+ Filename + ' available on: ' + APathFound)
       until not SearchForFile(HDD + ':\', Filename, APathFound);
      end
    else
    WriteLn(myFile, Filename + ' is not available on ', HDD);
end;
//
//
Wie man sieht arbeitet Deleting Files Procedure mit den Laufwerken c:\ - z:\. Ich hab mir aber eine Prozdur geschrieben um die vorhandenen Laufwerke auszulesen und somit möchte ich das Deleting Files Procedure nur mit den ausgelesenen Laufwerken arbeitet. Ich krieg den Code aber nich hin kann mir jemand helfen?

MFG
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Variablen in Prozudur übergeben

  Alt 2. Mär 2007, 06:20
Guten Morgen,

habe es jetzt nicht getestet, sollte aber ungefähr so gehen:

Delphi-Quellcode:
Program Project2;

{$APPTYPE CONSOLE}

uses
  Windows,SysUtils,ImageHlp,Dialogs,ShellApi;

type
  TDriveArray : Array of String; // neu

////Get Drives Function

function GetDrives:TDriveArray; // funktion gibt die Laufwerke zurück; Parameter FileName entfernt
var
  Drives: TDriveArray;
  Idx: Integer;
  Drive: Char;
begin
  SetLength(Drives, 0);
  Idx := 0;
  for Drive := 'Cto 'Zdo
  begin
    if GetDriveType(PChar(Drive + ':/')) = DRIVE_FIXED then
    begin
      SetLength(Drives, Idx + 1);
      Drives[Idx] := Drive + ':\';
      Idx := Idx + 1;
    end;
  end;
 // die Ausgabe wird nicht gebraucht
 { if Length(Drives) > 0 then
    for Idx := Low(Drives) to High(Drives) do
    WriteLn(Drives[Idx]);
}

  result:=drives;

end;
//

////Deleting Files Procedure
Procedure DeletingFiles(ADrives:TDriveArray;Filename:String); // neuer Parameter
var
  myFile : TextFile;
  APathFound: String;
  HDD: Char;
  i:Byte;

begin
  for i:=low(ADrives) to high(ADrives) do
    if SearchForFile(ADrives[i] + ':\', Filename, APathFound) then
    begin
       repeat
          DeleteFile(ApathFound+Filename);
          WriteLn(myFile, ':: '+ Filename + ' available on: ' + APathFound)
       until not SearchForFile(ADrives[i] + ':\', Filename, APathFound);
      end
    else
    WriteLn(myFile, Filename + ' is not available on ', ADrives[i]);
end;
//
//
Klaus
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#3

Re: Variablen in Prozudur übergeben

  Alt 2. Mär 2007, 06:38
Moin Klaus =)

Ich musste

var
myFile : TextFile;
APathFound: String;
HDD: Char;
i:Byte;

über die Procdure schreiben weil die Variablen Global sind und nun bekommen ich den Error: Inkompatible Typen: String und TDriveArray in der Zeile:

DeletingFiles('test.txt');

MFG
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Variablen in Prozudur übergeben

  Alt 2. Mär 2007, 06:42
Die Signatur sieht auch so aus:
Procedure DeletingFiles(ADrives:TDriveArray;Filename:String);
Markus Kinzler
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#5

Re: Variablen in Prozudur übergeben

  Alt 2. Mär 2007, 06:45
Damit ist mir ja jetz nicht wirklich geholfen weil ich nich verstehe was daran falsch ist :/
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Variablen in Prozudur übergeben

  Alt 2. Mär 2007, 06:48
Die Prozedur erwartet 2 Parameter. Du übergibst aber nur den 2. Dessen Typ unterscheidet sich vom erwarteten typ für den 1. Parameter. Und das sagt die Fehlermeldung doch auch aus, oder?
Markus Kinzler
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#7

Re: Variablen in Prozudur übergeben

  Alt 2. Mär 2007, 06:52
Achso dann wäre es DeletingFiles(ADrives, 'test.txt');

Aber die Procedure funktioniert nicht so wie ich es mir gewünscht hätte :/
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Variablen in Prozudur übergeben

  Alt 2. Mär 2007, 06:59
Habe oben noch eine Kleinigkeit geaendert.

Der Aufruf schaut dann so aus:
DeletingFiles(GetDrives,'Dein FileName'); Was funktioniert denn nicht wie erwartet?

Gruesse
Klaus
Klaus
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#9

Re: Variablen in Prozudur übergeben

  Alt 2. Mär 2007, 07:14
Also Fehler bekomm ich nicht aber das Programm macht nich was es machen sollte =)

Die Datei abcdefg.txt liegt in c:\ und d:\ in verschiedenen Ordnern. Nach Programm Auführung sollten sie ja gelöscht sein und es sollte die Auswertung is not available on "Drive".

Das wunderliche daran ist das die Dateien alle noch da sind aber trotzdem die Auswertung is not available on "Drive" kommt =)

Also irgendwas haut da nicht hin es müsste ja die Auswertung is available on "Drive" kommen wenn die Dateien vorhanden sind..

Befehl ist: DeletingFiles(GetDrives,'abcdefg.txt');
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Variablen in Prozudur übergeben

  Alt 2. Mär 2007, 07:19
Delphi-Quellcode:
function GetDrives:TDriveArray; // funktion gibt die Laufwerke zurück; Parameter FileName entfernt
var
  Drives: TDriveArray;
  Idx: Integer;
  Drive: Char;
begin
  SetLength(Drives, 0);
  Idx := 0;
  for Drive := 'Cto 'Zdo
  begin
    if GetDriveType(PChar(Drive + ':/')) = DRIVE_FIXED then
    begin
      SetLength(Drives, Idx + 1);
      Drives[Idx] := Drive + ':\'; // hier setzt Du :\ an den laufwerksbuchstaben
      Idx := Idx + 1;
    end;
  end;
und hier auch
if SearchForFile(ADrives[i] + ':\', Filename, APathFound) then An einer Stelle solltest Du es entfernen.

Gruesse
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:39 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