Autor Beitrag
Henri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Do 10.08.17 09:36 
Hallo Leute,

habe ich wieder eine Frage, in diese Try-catch-block versuche ich Datei in meinem Programm hochzuladen, aber ich möchte mal etwas andern, vielleicht kann jemandem eine Idee haben.
es geht darum, wenn ich Dateien Hochladen will, geht es per Drag and Drop, dann vor der Ladung, muss ich für jede Datei die Dokumentart und die Dokumentunterart festlegen, wenn nicht, dann wird die Datei in ParentfolderDisplayname(dem Vaterordner) gespeichert.
Jetzt möchte gern diesen Stückcode ändern, so dass es in der large wäre, die Dokumentart und Dokumentunterart von mehrere Dateien festzulegen, und nicht dass ich für jedes einzelne Datei festlegen muss.
dh wenn ich sehe zum Beispiel habe ich 10 Datei die zu der gleichen Dokumentart und Dokumentunterart gehört, Ziehe die per Drag und Drog, dann lege ich die Dokumentart und die Dokumentunterart fest.
dann werden die hochgeladen.

Wenn ich irgendwo unklar war, bitte einfach mal fragen.
Danke für ihre Hilfe.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
  var alcon = Session.Instance.GetALConnector();
    try
    {
      Resources result = alcon.GetRepositoryResources(" select Dokumentart, Dokumentunterart, ParentFolderDisplayname where resourcetype = 2 and deletestate = 0 order by parentidentifier,Dokumentart, Dokumentunterart, displayname scope subtree"false, folder, ""false);

      
      for(int i = 0; i < result.Count;i++)
      {
        if(worker.CancellationPending == false)
        {

          RepositoryDocument document = (RepositoryDocument)result[i];
          String dokArt = vlDokArt.GetText4Key( (String)document.PropertyProvider.GetProperty("Dokumentart",true));
          String dokUnterArt = vlDokUnterArt.GetText4Key((String)document.PropertyProvider.GetProperty("Dokumentunterart",true));
          
          //System.Windows.MessageBox.Show(dokArt);
          String parentFolderDisplayname = (String)document.PropertyProvider.GetProperty("ParentFolderDisplayname",true);
          String computedFolderPath =FolderPath;
          if (!parentFolderDisplayname.Equals("14. Revision")){
            
            if (dokArt == null){
              dokArt =parentFolderDisplayname;
            }else{
              computedFolderPath = computedFolderPath+"\\"+parentFolderDisplayname;
            }
          }
          
          if ( dokArt != null){
            if ( dokUnterArt!= null){
              computedFolderPath = computedFolderPath +"\\" +dokArt + "\\"+ dokUnterArt;
            }else{
              computedFolderPath = computedFolderPath +"\\" +dokArt ;
            }
          }
          
          
          //System.Windows.MessageBox.Show(computedFolderPath);
          
          if ( Directory.Exists(computedFolderPath)){
            //            Directory.CreateDirectory(computedFolderPath);
            //System.Windows.MessageBox.Show("ist da");

          }else{
            //System.Windows.MessageBox.Show("erstellen");
            Directory.CreateDirectory(computedFolderPath);
            //System.Windows.MessageBox.Show("erledigt");
          }
          
          //result.
          IList<IContentItemInfo> contentInfo = document.ContentProvider.GetContent(nullfalse);
          //List<string> files = contentInfo.Select(p => p.LocalFilename).ToList();
          List<string> files = contentInfo.Select(p => p.LocalFilename).ToList();
          
          //System.Windows.MessageBox.Show(contentInfo.Select(p => p.LocalFilename).ToString());
          
          AddHtmlInformation(ref xhtml, document, files, computedFolderPath);
          foreach(string file in files)
          {
            if(worker.CancellationPending == false)
            {
              string target = System.IO.Path.Combine(computedFolderPath, System.IO.Path.GetFileName(file));

              while(File.Exists(target))
              {
                string temp = System.IO.Path.GetFileNameWithoutExtension(target) + "_" + System.IO.Path.GetExtension(target);
                target = System.IO.Path.Combine(computedFolderPath, temp);
              }
              File.Copy(file, target);
            }
            else
            {
              e.Result = xhtml;
              e.Cancel = true;
              return;
            }
            
          }
          
          worker.ReportProgress((100 / result.Count) * (i + 1));
//              }
        }
        else
        {
          e.Result = xhtml;
          e.Cancel = true;
          return;
        }
      }
    }
    finally{ alcon.Release(); }

    e.Result = xhtml;
  }



Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Do 10.08.2017 um 09:59
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 3532
Erhaltene Danke: 689

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Do 10.08.17 14:58 
Sorry, aber auch nach mehrmaligem Lesen kann ich nicht dein Problem verstehen (und das liegt nicht nur an dem schlechten Deutsch).

Und was genau verstehst du unter
Zitat:
... die Dokumentart und Dokumentunterart von mehrere Dateien festzulegen, und nicht dass ich für jedes einzelne Datei festlegen muss.
?

PS: Pfade solltest du mittels Path.Combine(...) zusammensetzen.
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1671
Erhaltene Danke: 305

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Do 10.08.17 15:08 
Ich vermute, mit Dokumentart ist z.B. eine Grafik gemeint, die als Grafik/Bild identifiziert wird. Die Unterart könnte demnach die Dateiendung sein, wie z.B. JPG.

_________________
„Wo andere blind der Wahrheit folgen, denk daran ... Nichts ist wahr!" (Assassin's Creed I-II)
Henri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Do 10.08.17 16:43 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Sorry, aber auch nach mehrmaligem Lesen kann ich nicht dein Problem verstehen (und das liegt nicht nur an dem schlechten Deutsch).

Und was genau verstehst du unter
Zitat:
... die Dokumentart und Dokumentunterart von mehrere Dateien festzulegen, und nicht dass ich für jedes einzelne Datei festlegen muss.
?

PS: Pfade solltest du mittels Path.Combine(...) zusammensetzen.


Wenn ich mehrere Datei per Drag and Drop ziehen sollte wie auf dem Bild1
www.bilder-upload.eu...5c4ec-1502376108.png
muss ich jedes mal vor der abspeicherung die Dokumentart und Dokumentunterart jeder Datei einstellen (recht auf dem Bild2)
www.bilder-upload.eu...72df4-1502376241.png

Sorry von meinem schlechten Deutsch

Wenn Frage gibt, antworte ich gern
Einloggen, um Attachments anzusehen!
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1671
Erhaltene Danke: 305

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Do 10.08.17 17:57 
Wir wissen immer noch nicht, was eine Dokumentart bei DIR ist! Und Dokumentunterart soll: Parkett, Rolltore, Sanitär ... sein?! Das haben diese Begriffe mit einem Dokument zu tun?

_________________
„Wo andere blind der Wahrheit folgen, denk daran ... Nichts ist wahr!" (Assassin's Creed I-II)
Henri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Do 10.08.17 18:07 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Wir wissen immer noch nicht, was eine Dokumentart bei DIR ist! Und Dokumentunterart soll: Parkett, Rolltore, Sanitär ... sein?! Das haben diese Begriffe mit einem Dokument zu tun?


Bevor ich ein Datei abspeichert, lege ich fest, zu welche Dokumentart und Dokumentunterart gehört
ZB. ich konnte festlegen, dass Die Objektorientierte-Datei eine "Nachweis" ist. Die werte von Dokumentarten und Dokumentunterarten sind schon in meinem Programm bekannt
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1671
Erhaltene Danke: 305

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Do 10.08.17 19:17 
Ok, einzig dein Programm hat Werte / Attribute zu "Dokumentarten und Dokumentunterarten", die du selber bestimmt hast. Und du möchtest mit Drag and Drop erreichen, dass dein Programm selbstständig einer Datei, Werte zu Dokument(-unter)arten festlegt?
Das ist so nicht möglich, solange dein Programm nicht weiss, worum es in der Datei geht. Entweder hat die Datei im Dateinamen einen Begriff oder ein Merkmal, dass sie eindeutig für z.B. Sanitär kennzeichnet, dann könntest du die Dateinamen vergleichen und darauf prüfen.
Ansonsten, keine Chance.

_________________
„Wo andere blind der Wahrheit folgen, denk daran ... Nichts ist wahr!" (Assassin's Creed I-II)
Henri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Do 10.08.17 20:20 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Ok, einzig dein Programm hat Werte / Attribute zu "Dokumentarten und Dokumentunterarten", die du selber bestimmt hast. Und du möchtest mit Drag and Drop erreichen, dass dein Programm selbstständig einer Datei, Werte zu Dokument(-unter)arten festlegt?
Das ist so nicht möglich, solange dein Programm nicht weiss, worum es in der Datei geht. Entweder hat die Datei im Dateinamen einen Begriff oder ein Merkmal, dass sie eindeutig für z.B. Sanitär kennzeichnet, dann könntest du die Dateinamen vergleichen und darauf prüfen.
Ansonsten, keine Chance.


Es ist nicht so gemeint , vielleicht ahbe ich mich falsch ausgedruckt.
Ich möchte mal den Code ändern, so dass ich die Werte /Attribute (Dokumentarten und Dokumentunterarten) zu mehrere Dateien gleichzeitig vergeben kann.
Bis jetzt verarbeitet den Code Dateien nach Dateien.
Nehme ich ein Beispiel:
Ich habe 5(A, B, C, D, E) Dateien, die ich gern abspeichern möchte, per Drag and Drug ziehe alle 5 Dateien und lege ich die in meine Programm.
So werden die verarbeiten:
Öffnet sich das Programm mit der Datei A direkt recht (wie auf dem Bild) kann der Anwender entscheiden was für eine Dokumentart und Dokumentunterart will vergeben, wenn es getan ist , dann der Anwender drückt auf speichern, dann wird die Datei gespeichert.
dann nächte Datei B genau das gleich usw...
Mein Wünsch ist, ich weiss ZB. mein 5 Dateien gehört alle zu der Dokart X und zu dokunterart Y , wenn ich die Arten schon vergeben dass das Programm alle abspeichert, und nicht nach jeder Datei die Art und Unterart fragt.
Das ist das Problem wenn ich mich gut ausgedruckt habe.
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1671
Erhaltene Danke: 305

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Do 10.08.17 20:59 
Funktioniert das Drag and Drop schon?
Sobald ein Drop auf ein Control erfolgt, dann merkst du dir aus jener Datei den vollständigen Dateipfad in z.B. einer List<string> oder string[].
Wenn alle benötigten Dateien ge-dropt sind, gehe mit einer Schleife alle Elemente in der Liste/Array durch und setze deine Dok(unter)art so, wie du es im Moment mit einer Datei machst.

_________________
„Wo andere blind der Wahrheit folgen, denk daran ... Nichts ist wahr!" (Assassin's Creed I-II)
Henri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Fr 11.08.17 06:19 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Funktioniert das Drag and Drop schon?
Sobald ein Drop auf ein Control erfolgt, dann merkst du dir aus jener Datei den vollständigen Dateipfad in z.B. einer List<string> oder string[].
Wenn alle benötigten Dateien ge-dropt sind, gehe mit einer Schleife alle Elemente in der Liste/Array durch und setze deine Dok(unter)art so, wie du es im Moment mit einer Datei machst.


Ja das Drag and Drog funktioniert sehr gut
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18517
Erhaltene Danke: 1572

W10 x64 (Chrome, IE11)
Delphi 10.1 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 11.08.17 06:53 
user profile iconHenri hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich mehrere Datei per Drag and Drop ziehen sollte wie auf dem Bild1
Es wäre sinnvoller die Bilder anzuhängen, damit sie auch für spätere Leser noch verfügbar sind. Dazu kommt, dass bei uns in der Firma solche Seiten blockiert sind, ich die Bilder also gar nicht anschauen kann.

_________________
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 3532
Erhaltene Danke: 689

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Fr 11.08.17 08:12 
Henri hat folgendes geschrieben:
Mein Wünsch ist, ich weiss ZB. mein 5 Dateien gehört alle zu der Dokart X und zu dokunterart Y , wenn ich die Arten schon vergeben dass das Programm alle abspeichert, und nicht nach jeder Datei die Art und Unterart fragt.

Aber woher soll das Programm das wissen?
Bau doch eine CheckBox "Für alle weiteren Dateien übernehmen" (oder so ähnlich) ein, welche der Anwender dann bei der ersten Datei aktiviert und das Programm dann für die weiteren Dateien die ausgewählte Dokumentart und -unterart übernimmt.

PS: Ich habe die Bilder mal als Anhang in den entsprechenden Beitrag eingefügt.
Henri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Fr 11.08.17 10:52 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Bau doch eine CheckBox "Für alle weiteren Dateien übernehmen" (oder so ähnlich) ein, welche der Anwender dann bei der ersten Datei aktiviert und das Programm dann für die weiteren Dateien die ausgewählte Dokumentart und -unterart übernimmt.

Dein Vorschlag scheint mir gut, muss ich mal überlegen, wie ich sowas schaffen kann.
Das einfachste ist schon geschafft, muss ich mit dem Code sehen
Einloggen, um Attachments anzusehen!