リストボックスに関連してファイルの行削除

このQ&Aのポイント
  • VisualC++ 6.0でMFCを利用しています。あるテキストファイルの中身が表示されているリストボックスがあります。そのリストボックスのある行をダブルクリックすると、対応した行のテキストファイル、リストボックス両方の行が削除されるプログラムを組んでいます。
  • リストボックスの行は削除できるのですが、テキストファイルのほうは削除する手段がわかりません。
  • どうすればテキストファイルの内容を削除できるのでしょうか?教えてください。
回答を見る
  • ベストアンサー

リストボックスに関連してファイルの行削除

VisualC++ 6.0でMFCを利用しています. あるテキストファイルの中身が表示されているリストボックスがあります. そのリストボックスのある行をダブルクリックすると, 対応した行のテキストファイル,リストボックス両方の行が削除されるプログラムを組んでいます. リストボックスの行は削除できるのですが,テキストファイルのほうは削除する手段がわかりません. void CModel03Dlg::OnDblclkMyList02() { // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください CModel03Dlg::List_Selected(fp); int label_number; label_number = m_sList02.GetCurSel(); char input[256], string[256]; m_sList02.GetText(label_number, input); while(fgets(string, 256, fp) != NULL){ if(input==string){ //string = "\0"; //この辺りがわからない MessageBox(input); // Boxが表示されないのでif文の評価がfalseだと } } m_sList02.DeleteString(label_number); } どうすればテキストファイルの内容を削除できるのでしょうか?教えてください.

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

指定された行だけ削除するというのは、面倒なので、 指定されたリストボックスの行を削除した後、 現在リストボックスに保持されている行を 新たにファイルに上書で出力すればいいと思います。 * ちなみに 文字列が等しいかどうかは、 strcmpを使います。

Achilles1993
質問者

お礼

考え方の問題だったのですね. BLUEPIXYさん,本当にありがとうございます.解決しました. (補足もありがとうございます)

関連するQ&A

  • リストボックスから削除、「いいえ」でも削除される

    Windows7 Excel2007でマクロ作成中の初心者です。 リストボックスから、シート(顧客名)を選んで削除するマクロです。 削除がうまくいくのですが、「いいえボタン」を押しても シートが削除されてしまいます。どう修正したらよろしいでしょうか。 Private Sub 顧客削除_Click() Dim i As Integer Dim btn Dim name As String With 顧客リスト For i = 0 To .ListCount - 1 If .Selected(i) Then name = .list(i) '選択されたリストを変数に格納 btn = MsgBox("本当に、 " & name & " さんを削除していいですか?", _ vbYesNo, "削除の確認") End If Next i Application.DisplayAlerts = False Worksheets(Mid(.list(.ListIndex - 0), InStr(.list(.ListIndex - 0), " ") + 1)).Delete Application.DisplayAlerts = True '顧客リスト.RemoveItem (顧客リスト.ListIndex) '顧客リスト.ListIndex = -1 リストボックスの項目削除 Worksheets(1).Activate End With If btn = vbYesNo Then Exit Sub End If ActiveWorkbook.Save End Sub ----------------------------------------------- Sub リストボックスの項目削除() Dim i As Integer For i = 顧客リスト.ListCount - 1 To 0 Step -1 If 顧客リスト.Selected(i) Then 顧客リスト.RemoveItem (i) Exit For End If Next i End Sub

  • リストボックス内検索

    マクロ初心者です。 (エクセル2003を使用) ユーザーフォームにテキストボックスとリストボックスを作り、 リストボックス内のデータ(2列;ナンバーと文字、2500行くらい)の検索をテキストボックスに入力した文字で行いたいのですが、どうしていいのかわかりません。 ワークシート上では、Find関数を使ってできるのですが、リストボックス内の検索では使えませんか? inStr関数を使うのでしょうか? 検索がされたときのスクロールもできるといいのですが…。 よろしくお願いいたします。

  • リストボックスと同じセルデーターを削除する

    3時間ほど奮闘していますが、思うようにできません。 よろしくお願いします。(Office2010 Windows7) ユーザーフォームのリストボックス(摘要リスト)で、選んだ項目と 同じ項目があるセルを、N3からラスト行の中から探し出して、削除する。 また、その1つ左側(M列)と、2つ左側(L列)のセルデーター及び リストボックス(摘要リスト)で、選んだ項目も削除する。 Dim i As Long With ActiveWorkbook.Sheets("勘定科目") 摘要リスト.Clear For i = 3 To Range("N65536").End(xlUp).Row If .Range("N" & i).Value = 摘要リスト.Value Then 摘要リスト.List(.ListIndex, 0) = "" ActiveCell.Offset(0, 0).Value = "" ActiveCell.Offset(0, -1).Value = "" ActiveCell.Offset(0, -2).Value = "" End If Next End With と、したのですが、うまく作動しません。

  • 複数行表示されたリストボックスから最後の行だけ削除するには

    エクセルのユーザーフォーム上にあるリストボックスですが 必要に応じてボタンクリックでAddItemにより項目が追加されて行くリストボックスがあります この複数行表示された項目の内 別のボタンクリックで最後に追加された行だけ削除していくには どのように記述すればいいのでしょうか ------------- abcde fghij klmno pqrst ------------ と表示されていたリストボックスから クリックするたびに ------------- abcde fghij klmno ------------- ------------- abcde fghij ------------- の様に最後の行だけ削除をしたいのです 単純に ListBoX1.Clear では全て消されてしまい こまっています ぜひお力をお貸し下さい よろしくお願いします

  • リストボックスの1行目を選択状態にする

    リストボックス 何も選択していないのなら、1行目を選択状態にする というようにするにはどうすればいいでしょうか? 今は無理やり Sub test() If IsNull(Sheets("Sheet2").ListBox1.Value) = True Then Sheets("Sheet2").ListBox1.Value = "a" End If End Sub としていますが、 「リストボックスの1行目を選択状態にする」 にはどうすればいいですか? リストボックスがどの業も選択してない時に、 画像のようにしたいです。

  • ExvelVBAでテキストボックスの2行目以降を記録するには。

    ExvelVBAでテキストボックスの2行目以降を記録するには。 ExcelVBA超初心者です。 以前に頂いた以下のコードなのですが、1行目の文字は記録されるのですが、2行目以降が記録 できません。2行目以降を記録するにはどうしたらよいのでしょうか。宜しくお願い致します。 テキストボックスのオブジェクト名 : txtMemo 1.×ボタンで閉じる時にテキストファイルへ保存 ユーザーフォームのTerminateイベントに下記処理記述 Private Sub UserForm_Terminate() Const TXT_FILE As String = "¥memo.txt" Open ThisWorkbook.Path & TXT_FILE For Output As #1 Print #1, txtMemo.Text Close #1 ' ファイルを閉じます。 End Sub 2.起動表示時に保存内容をテキストボックスに初期表示します。 ユーザーフォームのInitializeイベントに下記処理記述 Private Sub UserForm_Initialize() Const TXT_FILE As String = "¥memo.txt" Dim TextLine 'ファイルの存在チェック If Dir(ThisWorkbook.Path & TXT_FILE) = "" Then Exit Sub End If Open ThisWorkbook.Path & TXT_FILE For Input As #1 Do While Not EOF(1) Line Input #1, TextLine txtMemo.Text = TextLine Loop Close #1 ' ファイルを閉じます。 End Sub

  • リストボックスの文字比較

    コンボボックスで選択された文字列をリストボックスと比較して 対応する行のリストボックスの文字列を削除を行いたいのですが 何故か、リストボックスの最初の行と、最後の行の文字列しか 等しいとみなされず、処理ができません。(名前が間違っている わけではないです)また、最初の行と最後の行の名前を、試しに 他の行の名前と入れ替えてみたりしましたが、やはり比較を行う時に 最初の行と最後の行しか文字列が一致しません… 文字列の比較の方法に問題があるのでしょうか… ご存知の方がいらっしゃいましたらアドバイスをお願いします comb = ComboBox1.Text For i = 0 To ListBox1.Items.Count - 1 → If comb = ListBox1.Items(i) Then ListBox1.Items.RemoveAt(i) Exit For End If Next

  • リストボックスからシート選んで削除したい

    Excel2007でマクロ作成中の初心者です。 以下のマクロを実行すると、最終行でコンパイルエラーがでて 「参照が不正または不完全です」と表示され削除ができません。 どうしたら、削除できるでしょうか。 Private Sub 顧客削除_Click() Dim i As Integer Dim btn Dim name As String With 顧客リスト For i = 0 To .ListCount - 1 If .Selected(i) Then name = .list(i) '選択されたリストを変数に格納 btn = MsgBox("本当に、" & name & "さんを削除していいですか?", _ vbYesNo + vbQuestion, "削除の確認をする") End If Next i End With If btn = vbNo Then Exit Sub End If 'Worksheets(Mid(.list(.ListIndex - 0), InStr(.list(.ListIndex - 0), " ") + 1)).Delete 'ActiveWorkbook.Sheet.[(List(i))].Delete 'ActiveWorkbook.Sheets(name).Delete Worksheets(Split(.list(.ListIndex - 0), " ")(1)).Delete ' End Sub

  • VB6,リストボックスの特定行の色変更は可能?

    リストボックスに複数行テキストが登録されているときに、特定の行の背景色を変更することは可能でしょうか? リストボックスのプロパティ等をいろいろ探してみたのですがそれらしきものは見つかりません。 サブクラス化というやつをすればできるのでしょうか? よろしくお願いします。

  • テキストボックスの内容(複数行)をリストへ

    テキストボックスの内容(複数行)をリストボックスへ1行表示にするにはどうすれば良いのでしょうか? replaceにてvbcrlf(改行文字?)を置き換えしようとしても無理でした。 ご教授お願いします。