zeilen weise aus txt lesen



  • Linke mal die SHLWAPI.lib mit



  • #include "Shlwapi.h"

    ist drin



  • ja, du musst aber auch die lib datei beim linken mitgeben.
    schreib oben mal noch
    #pragma comment(lib,"Shlwapi.lib"); rein



  • Sorry, hatte ich ganz vergessen zu erwähnen.
    Das hier fehlt ...

    #include "Shlwapi.h"
    #pragma comment( lib, "Shlwapi.lib" )
    

    Gruß
    :: NoName ::



  • int nTmp = strPfad.ReverseFind('\\');
    strPfad.Delete(nTmp,strPfad.GetLength()-nTmp);
    

    In strPfad steht dein Pfad mit Dateiname aus der TXT-Datei.
    Nach den Delete ist der Dateinamen gelöscht und es steht nur mehr der Pfad din.

    Shlwapi.lib brauchst du nicht un vergrößert nur dein Programm.
    Ist alles nur eine einfache Stringbearbeitung.

    Zu den \.
    In einem CString steht nicht \\ drin außer du schreibst es explizit rein.

    CString test("\\\\");  Hier steht im CString jetzt \\ was 2 Zeichen sind
    

    Wenn du etwas in den CString schreibst dann musst du Escapen.
    \\

    Danach steht im CString aber nur mehr 1 \ da der andere \ das Escape war und wegfällt. Dies besagt der Klasse nur das jetzt ein Zeichen kommt und nicht eine Escape-Folge eingeleitet wird.



  • danke unix

    heisst das aber auch das der Pfad, der aus einem File ausgelesen wird, erkannt wird auch mit nur einem \.
    Da ich den Pfad brauche später, ist das mom. wichtig für mich.

    Ich möchte nämlich den Pfad später öffnen, um aus diesem den Inhalt auszulesen und in die txt-datei zu kopieren.



  • es gibt in windows keine pfad mit \\ außer wenn es sich um ein Netzlaufwerk handelt.

    \\netz\freigabe\ordner\date.exe

    es gibt in Windows auch keine Funktion, welche dir \\ als Pfad zurückgibt.
    Ich habe ja bereits gesagt: \\ entsteht nur wenn du im SOurcecode direkt eine String in eine stringvariable (ob das jetzt CStrring, string,QString oder was auch immer ist egal da jeder dieser Klassen ein Escapezeichen kennen) schreibst.



  • jaja das mach ich ja.
    Die Pfade stehen in CString variablen. Daher habe ich auch die Probs mit dem öffnen etc.
    Ich kann aber wie gesagt nicht einfach sagen alle \ in \\ wandeln, da \ irgendwie nicht erkannt wird wegen den escapesequenzen.

    Wenn jemand mal ein bsp hätte wie er das bei sich geregelt hat wäre ich ihm sehr dankbar.



  • Wofür willst du \ in \\ umwandeln?



  • Hallo!

    Möchte mich mal die Diskussion einklinken, weil ich so ein ähnliches Problem habe!

    Als Anfänger frage ich mich wie ich den schon genannten Code in eine Funktion 'DateiAuslesen' einbinden kann, die ich von der Funktion'LadenSpeichernDoc::Serialize' aufrufe?

    Kann mir jemand helfen? THX

    Gruß Markus



  • also ich habe pfade in ein Textfile abgespeichert werden. ohne \\ dazwischen.
    Diese lese ich dieser fkt aus um einmal dieses zuöffnen und den inhalt in ein neues zukopieren. Dieses neue setzt sich aus dem namen des alten zusammen, soll aber an einem anderen ort abgelegt werden.

    Ich hatte nun aber probleme den namen als einziges heraus zufiltern, da wenn ich finde \ sagte, er das als escapesequenz angesehen hat. daher wollte ich erst aus allen ein \\ machen damit ich es dann leichter habe.

    natürlich bin ich über vereinfachungen meiner vorgehensweise erfreut. 🙂

    Das File, dessen Pfad ich auslese ist ein Word-doc. Diese kann ich ja ohne probs öffnen und in eine txt, die kopie abspeichern oder??
    Das org sollte sondern so bleiben wie es ist.



  • Mach einfach folgendes:

    Du ließt den Pfad aus deiner TXT-Datei aus.

    Da steht dann im CString strPfad z.B. "c:\windows\hallo.txt"

    Mit diesem CString führst du meine Operationen aus. Übrig bleibt in strPfad nur mehr der Pfad ohne Dateiname.

    ReverseFind('\');

    Hier wird deshalb \\ übergeben weil es sonst als Escapeeinleitung erkannt wird.

    Der erste \ macht aus dem 2ten \ aber ein Zeichen.
    SOmit wird nur nach \ im CString gesucht.
    Dies habe ich aber bereits jetzt zum 3ten Mal erklärt.
    Jetzt weiß ich auch nicht mehr wie ich es dir verständlich machen soll.



  • hallo,

    es ist jetzt endlich angekommen.
    habe an deinem code noch ein bissl rum gebastelt und nu geht es bis auf eien kleinichkeit. Kann es ja mal posten

    int nTmp = inhalt.ReverseFind('\\'); 
    inhalt.Delete(nTmp-inhalt.GetLength(),nTmp);
    
    DWORD l =inhalt.GetLength();
    inhalt.Delete(1-l);
    inhalt.Delete(l,l-3); // hier spinnt er
    

    und zar tu ich an dem string noch ein wenig schnippeln.
    erst das letzte \ weg und dann soll er die letzten drei zeichen entfernen. Das macht er aber nicht.
    hast du noch einen kleinen tipp ???
    das biste mich auch erstmal los

    danke


Anmelden zum Antworten